Skip to content

Commit 1feb243

Browse files
author
Bálint Kemény
committed
Add Day15
1 parent c7d2a39 commit 1feb243

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

Day15/main.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package main
2+
3+
import "fmt"
4+
5+
type memoryLoc struct {
6+
current int
7+
last int
8+
}
9+
10+
func main() {
11+
input := []int{1, 2, 16, 19, 18, 0}
12+
m := make(map[int]memoryLoc)
13+
14+
var previousNumber int
15+
for i := 0; i < 30000000; i++ {
16+
if i < len(input) {
17+
m[input[i]] = memoryLoc{i, -1}
18+
previousNumber = input[i]
19+
} else {
20+
if m[previousNumber].last == -1 {
21+
_, ok := m[0]
22+
if !ok {
23+
m[0] = memoryLoc{i, -1}
24+
} else {
25+
m[0] = memoryLoc{i, m[0].current}
26+
}
27+
previousNumber = 0
28+
} else {
29+
currentNumber := m[previousNumber].current - m[previousNumber].last
30+
_, ok := m[currentNumber]
31+
if !ok {
32+
m[currentNumber] = memoryLoc{i, -1}
33+
} else {
34+
m[currentNumber] = memoryLoc{i, m[currentNumber].current}
35+
}
36+
previousNumber = currentNumber
37+
}
38+
}
39+
}
40+
41+
fmt.Println(previousNumber)
42+
}

0 commit comments

Comments
 (0)