]> fbox.kageds.com Git - adventofcode.git/blob - 2022/go/utils/inputs/inputs.go
day11
[adventofcode.git] / 2022 / go / utils / inputs / inputs.go
1 package inputs
2
3 import (
4 "strings"
5
6 "adventofcode2022/utils"
7 "adventofcode2022/utils/grid2d"
8 sparsegrid "adventofcode2022/utils/sparseGrid"
9 )
10
11 func ToInts(input string, sep string) []int {
12 var r []int
13 for _, line := range strings.Split(input, sep) {
14 if line != "" {
15 r = append(r, utils.MustAtoi(line))
16 }
17 }
18 return r
19 }
20
21 func ToGrid2D[T any](input, rowSep, colSep string, empty T, conv func(string) T) *grid2d.Grid[T] {
22 lines := strings.Split(input, rowSep)
23
24 grid := grid2d.NewGrid(len(lines[0]), len(lines), empty)
25 for y, line := range lines {
26 for x, v := range strings.Split(line, colSep) {
27 grid.Set(x, y, conv(v))
28 }
29 }
30
31 return grid
32 }
33
34 func ToSparseGrid[T comparable](input, rowSep, colSep string, empty T, conv func(string) T) *sparsegrid.SparseGrid[T] {
35 lines := strings.Split(input, rowSep)
36
37 grid := sparsegrid.NewGrid(empty)
38 for y, line := range lines {
39 for x, v := range strings.Split(line, colSep) {
40 grid.Set(x, y, conv(v))
41 }
42 }
43
44 return grid
45 }