-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
48 lines (38 loc) · 705 Bytes
/
main.go
File metadata and controls
48 lines (38 loc) · 705 Bytes
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
package main
import (
"github.com/danvolchek/AdventOfCode/lib"
)
type pos struct {
x, y int
}
func solve(instructions []byte) int {
position := pos{x: 0, y: 0}
gifts := make(map[pos]int)
gifts[position] = 1
for _, instruction := range instructions {
switch instruction {
case '^':
position.y -= 1
case 'v':
position.y += 1
case '>':
position.x += 1
case '<':
position.x -= 1
default:
panic(string(instruction))
}
gifts[position] += 1
}
return len(gifts)
}
func main() {
solver := lib.Solver[[]byte, int]{
ParseF: lib.ParseBytes,
SolveF: solve,
}
solver.Expect(">", 2)
solver.Expect("^>v<", 4)
solver.Expect("^v^v^v^v^v", 2)
solver.Verify(2572)
}