This commit is contained in:
Stefan Harmuth 2021-01-07 09:01:58 +01:00
parent cd36674648
commit 347f3472f9
4 changed files with 72 additions and 1 deletions

61
day02/day.go Normal file
View File

@ -0,0 +1,61 @@
package day02
import (
"tools"
)
func getCodeFromDirections(keypad [][]string, startX, startY int, instructions []string) string {
x := startX
y := startY
code := ""
for _, line := range instructions {
for _, inst := range line {
switch inst {
case 'L':
if x > 0 && keypad[y][x-1] != "x" {
x--
}
case 'R':
if x < len(keypad[0])-1 && keypad[y][x+1] != "x" {
x++
}
case 'U':
if y > 0 && keypad[y-1][x] != "x" {
y--
}
case 'D':
if y < len(keypad)-1 && keypad[y+1][x] != "x" {
y++
}
}
}
code += keypad[y][x]
}
return code
}
func Part1(puzzle tools.AoCPuzzle) interface{} {
instructions := puzzle.GetInputArray()
keypad := [][]string{
{"1", "2", "3"},
{"4", "5", "6"},
{"7", "8", "9"},
}
return getCodeFromDirections(keypad, 1, 1, instructions)
}
func Part2(puzzle tools.AoCPuzzle) interface{} {
instructions := puzzle.GetInputArray()
keypad := [][]string{
{"x", "x", "1", "x", "x"},
{"x", "2", "3", "4", "x"},
{"5", "6", "7", "8", "9"},
{"x", "A", "B", "C", "x"},
{"x", "x", "D", "x", "x"},
}
return getCodeFromDirections(keypad, 0, 2, instructions)
}

5
inputs/2 Normal file
View File

@ -0,0 +1,5 @@
LLLRLLULLDDLDUDRDDURLDDRDLRDDRUULRULLLDLUURUUUDLUUDLRUDLDUDURRLDRRRUULUURLUDRURULRLRLRRUULRUUUDRRDDRLLLDDLLUDDDLLRLLULULRRURRRLDRLDLLRURDULLDULRUURLRUDRURLRRDLLDDURLDDLUDLRLUURDRDRDDUURDDLDDDRUDULDLRDRDDURDLUDDDRUDLUDLULULRUURLRUUUDDRLDULLLUDLULDUUDLDLRRLLLRLDUDRUULDLDRDLRRDLDLULUUDRRUDDDRDLRLDLRDUDRULDRDURRUULLUDURURUUDRDRLRRDRRDRDDDDLLRURULDURDLUDLUULDDLLLDULUUUULDUDRDURLURDLDDLDDUULRLUUDLDRUDRURURRDDLURURDRLRLUUUURLLRR
UUUUURRRURLLRRDRLLDUUUUDDDRLRRDRUULDUURURDRLLRRRDRLLUDURUDLDURURRLUDLLLDRDUDRDRLDRUDUDDUULLUULLDUDUDDRDUUUDLULUDUULLUUULURRUDUULDUDDRDURRLDDURLRDLULDDRUDUDRDULLRLRLLUUDDURLUUDLRUUDDLLRUURDUDLLDRURLDURDLRDUUDLRLLRLRURRUDRRLRDRURRRUULLUDLDURDLDDDUUDRUUUDULLLRDRRDRLURDDRUUUDRRUUDLUDDDRRRRRLRLDLLDDLRDURRURLLLULURULLULRLLDDLDRLDULLDLDDDRLUDDDUDUDRRLRDLLDULULRLRURDLUDDLRUDRLUURRURDURDRRDRULUDURRLULUURDRLDLRUDLUDRURLUDUUULRRLRRRULRRRLRLRLULULDRUUDLRLLRLLLURUUDLUDLRURUDRRLDLLULUDRUDRLLLRLLDLLDUDRRURRLDLUUUURDDDUURLLRRDRUUURRRDRUDLLULDLLDLUDRRDLLDDLDURLLDLLDLLLDR
LRDULUUUDLRUUUDURUUULLURDRURDRRDDDLRLRUULDLRRUDDLLUURLDRLLRUULLUDLUDUDRDRDLUUDULLLLRDDUDRRRURLRDDLRLDRLULLLRUUULURDDLLLLRURUUDDDLDUDDDDLLLURLUUUURLRUDRRLLLUUULRDUURDLRDDDUDLLRDULURURUULUDLLRRURDLUULUUDULLUDUUDURLRULRLLDLUULLRRUDDULRULDURRLRRLULLLRRDLLDDLDUDDDUDLRUURUDUUUDDLRRDLRUDRLLRDRDLURRLUDUULDRRUDRRUDLLLLRURRRRRUULULLLRDRDUDRDDURDLDDUURRURLDRRUDLRLLRRURULUUDDDLLLRDRLULLDLDDULDLUUDRURULLDLLLLDRLRRLURLRULRDLLULUDRDR
RURRRUDLURRURLURDDRULLDRDRDRRULRRDLDDLDUUURUULLRRDRLDRRDRULLURRRULLLDULDDDDLULRUULRURUDURDUDRLRULLLRDURDDUDDRDLURRURUURDLDDDDDURURRURLLLDDLDRRDUDDLLLDRRLDDUUULDLLDRUURUDDRRLDUULRRDDUDRUULRLDLRLRUURLLDRDLDRLURULDLULDRULURLLRRLLDDDURLRUURUULULRLLLULUDULUUULDRURUDDDUUDDRDUDUDRDLLLRDULRLDLRRDRRLRDLDDULULRLRUUDDUDRRLUDRDUUUDRLLLRRLRUDRRLRUUDDLDURLDRRRUDRRDUDDLRDDLULLDLURLUUDLUDLUDLDRRLRRRULDRLRDUURLUULRDURUDUUDDURDDLRRRLUUUDURULRURLDRURULDDUDDLUDLDLURDDRRDDUDUUURLDLRDDLDULDULDDDLDRDDLUURDULLUDRRRULRLDDLRDRLRURLULLLDULLUUDURLDDULRRDDUULDRLDLULRRDULUDUUURUURDDDRULRLRDLRRURR
UDDDRLDRDULDRLRDUDDLDLLDDLUUURDDDLUDRDUDLDURLUURUDUULUUULDUURLULLRLUDLLURUUUULRLRLLLRRLULLDRUULURRLLUDUDURULLLRRRRLRUULLRDRDRRDDLUDRRUULUDRUULRDLRDRRLRRDRRRLULRULUURRRULLRRRURUDUURRLLDDDUDDULUULRURUDUDUDRLDLUULUDDLLLLDRLLRLDULLLRLLDLUUDURDLLRURUUDDDDLLUDDRLUUDUDRDRLLURURLURRDLDDDULUURURURRLUUDUDLDLDDULLURUDLRLDLRLDLDUDULURDUDRLURRRULLDDDRDRURDDLDLULUDRUULDLULRDUUURLULDRRULLUDLDRLRDDUDURRRURRLRDUULURUUDLULDLRUUULUDRDRRUDUDULLDDRLRDLURDLRLUURDRUDRDRUDLULRUDDRDLLLRLURRURRLDDDUDDLRDRRRULLUUDULURDLDRDDDLDURRLRRDLLDDLULULRRDUDUUDUULRDRRDURDDDDUUDDLUDDUULDRDDULLUUUURRRUUURRULDRRDURRLULLDU

4
inputs/2_test Normal file
View File

@ -0,0 +1,4 @@
ULL
RRDDD
LURDL
UUUUD

View File

@ -2,6 +2,7 @@ package main
import (
"aoc2016/day01"
"aoc2016/day02"
"flag"
"fmt"
"os"
@ -20,7 +21,7 @@ var myDir, _ = filepath.Abs(filepath.Dir(os.Args[0]))
func initDayFunctions() {
dayFunctions = map[int]map[int]func(puzzle tools.AoCPuzzle) interface{}{
1: {1: day01.Part1, 2: day01.Part2},
// 2: {1: day02.Part1, 2: day02.Part2},
2: {1: day02.Part1, 2: day02.Part2},
// 3: {1: day03.Part1, 2: day03.Part2},
// 4: {1: day04.Part1, 2: day04.Part2},
// 5: {1: day05.Part1, 2: day05.Part2},