-
Notifications
You must be signed in to change notification settings - Fork 0
/
part1.go
111 lines (95 loc) · 2.14 KB
/
part1.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func stringContainsMap(s string) bool {
return strings.Contains(s, "map")
}
type rangeEntry struct {
rangeStart int
rangeEnd int
rangeSpan int
}
type aocMap struct {
entries []rangeEntry
name string
from string
to string
}
func pathFromSeedToLocation(seed int, location int, maps []aocMap) int {
return 0
}
func main() {
println("Hello, World!")
file, _ := os.Open("example")
//file, _ := os.Open("input")
reader := bufio.NewReader(file)
line, _ := reader.ReadString('\n')
stripped := strings.TrimSpace(line)
seeds := make([]int, 0)
split := strings.Split(stripped, " ")
for i := range split {
split[i] = strings.TrimSpace(split[i])
parsed, _ := strconv.Atoi(split[i])
if parsed > 0 {
seeds = append(seeds, parsed)
}
}
fmt.Println(stripped)
fmt.Println(seeds)
fmt.Println("Starting loop.")
currRange := make([]rangeEntry, 0)
allMaps := make([]aocMap, 0)
var currMap aocMap
for {
line, err := reader.ReadString('\n')
if err != nil {
break
}
stripped := strings.TrimSpace(line)
if stringContainsMap(stripped) {
fmt.Println("new map found: " + stripped)
if len(currRange) > 1 {
fmt.Println("currMap: ", currRange)
spl := strings.Split(stripped, "-")
to := strings.Split(spl[2], " ")[0]
fmt.Println(spl)
currMap = aocMap{currRange, stripped, spl[0], to}
allMaps = append(allMaps, currMap)
currMap = aocMap{}
fmt.Println("has length: ", len(currRange))
}
currRange = make([]rangeEntry, 0)
continue
} else {
spl := strings.Split(stripped, " ")
fmt.Println("spl: ", spl)
if len(spl) < 3 {
continue
}
parr := make([]int, 3)
for i := range spl {
spl[i] = strings.TrimSpace(spl[i])
parsed, _ := strconv.Atoi(spl[i])
parr[i] = parsed
}
var me rangeEntry
me.rangeStart = parr[0]
me.rangeEnd = parr[1]
me.rangeSpan = parr[2]
fmt.Println("me:: ")
fmt.Println(me)
currRange = append(currRange, me)
fmt.Println(stripped)
}
}
allMaps = append(allMaps, currMap)
fmt.Println(allMaps)
fmt.Println(len(allMaps))
fmt.Println(allMaps[0])
minVal := 0
}