From 347f3472f9af800b1e2a55e8d574d34059f96057 Mon Sep 17 00:00:00 2001 From: Stefan Harmuth Date: Thu, 7 Jan 2021 09:01:58 +0100 Subject: [PATCH] day02 --- day02/day.go | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++ inputs/2 | 5 +++++ inputs/2_test | 4 ++++ main.go | 3 ++- 4 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 day02/day.go create mode 100644 inputs/2 create mode 100644 inputs/2_test diff --git a/day02/day.go b/day02/day.go new file mode 100644 index 0000000..42cd359 --- /dev/null +++ b/day02/day.go @@ -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) +} diff --git a/inputs/2 b/inputs/2 new file mode 100644 index 0000000..e66bf56 --- /dev/null +++ b/inputs/2 @@ -0,0 +1,5 @@ +LLLRLLULLDDLDUDRDDURLDDRDLRDDRUULRULLLDLUURUUUDLUUDLRUDLDUDURRLDRRRUULUURLUDRURULRLRLRRUULRUUUDRRDDRLLLDDLLUDDDLLRLLULULRRURRRLDRLDLLRURDULLDULRUURLRUDRURLRRDLLDDURLDDLUDLRLUURDRDRDDUURDDLDDDRUDULDLRDRDDURDLUDDDRUDLUDLULULRUURLRUUUDDRLDULLLUDLULDUUDLDLRRLLLRLDUDRUULDLDRDLRRDLDLULUUDRRUDDDRDLRLDLRDUDRULDRDURRUULLUDURURUUDRDRLRRDRRDRDDDDLLRURULDURDLUDLUULDDLLLDULUUUULDUDRDURLURDLDDLDDUULRLUUDLDRUDRURURRDDLURURDRLRLUUUURLLRR +UUUUURRRURLLRRDRLLDUUUUDDDRLRRDRUULDUURURDRLLRRRDRLLUDURUDLDURURRLUDLLLDRDUDRDRLDRUDUDDUULLUULLDUDUDDRDUUUDLULUDUULLUUULURRUDUULDUDDRDURRLDDURLRDLULDDRUDUDRDULLRLRLLUUDDURLUUDLRUUDDLLRUURDUDLLDRURLDURDLRDUUDLRLLRLRURRUDRRLRDRURRRUULLUDLDURDLDDDUUDRUUUDULLLRDRRDRLURDDRUUUDRRUUDLUDDDRRRRRLRLDLLDDLRDURRURLLLULURULLULRLLDDLDRLDULLDLDDDRLUDDDUDUDRRLRDLLDULULRLRURDLUDDLRUDRLUURRURDURDRRDRULUDURRLULUURDRLDLRUDLUDRURLUDUUULRRLRRRULRRRLRLRLULULDRUUDLRLLRLLLURUUDLUDLRURUDRRLDLLULUDRUDRLLLRLLDLLDUDRRURRLDLUUUURDDDUURLLRRDRUUURRRDRUDLLULDLLDLUDRRDLLDDLDURLLDLLDLLLDR +LRDULUUUDLRUUUDURUUULLURDRURDRRDDDLRLRUULDLRRUDDLLUURLDRLLRUULLUDLUDUDRDRDLUUDULLLLRDDUDRRRURLRDDLRLDRLULLLRUUULURDDLLLLRURUUDDDLDUDDDDLLLURLUUUURLRUDRRLLLUUULRDUURDLRDDDUDLLRDULURURUULUDLLRRURDLUULUUDULLUDUUDURLRULRLLDLUULLRRUDDULRULDURRLRRLULLLRRDLLDDLDUDDDUDLRUURUDUUUDDLRRDLRUDRLLRDRDLURRLUDUULDRRUDRRUDLLLLRURRRRRUULULLLRDRDUDRDDURDLDDUURRURLDRRUDLRLLRRURULUUDDDLLLRDRLULLDLDDULDLUUDRURULLDLLLLDRLRRLURLRULRDLLULUDRDR +RURRRUDLURRURLURDDRULLDRDRDRRULRRDLDDLDUUURUULLRRDRLDRRDRULLURRRULLLDULDDDDLULRUULRURUDURDUDRLRULLLRDURDDUDDRDLURRURUURDLDDDDDURURRURLLLDDLDRRDUDDLLLDRRLDDUUULDLLDRUURUDDRRLDUULRRDDUDRUULRLDLRLRUURLLDRDLDRLURULDLULDRULURLLRRLLDDDURLRUURUULULRLLLULUDULUUULDRURUDDDUUDDRDUDUDRDLLLRDULRLDLRRDRRLRDLDDULULRLRUUDDUDRRLUDRDUUUDRLLLRRLRUDRRLRUUDDLDURLDRRRUDRRDUDDLRDDLULLDLURLUUDLUDLUDLDRRLRRRULDRLRDUURLUULRDURUDUUDDURDDLRRRLUUUDURULRURLDRURULDDUDDLUDLDLURDDRRDDUDUUURLDLRDDLDULDULDDDLDRDDLUURDULLUDRRRULRLDDLRDRLRURLULLLDULLUUDURLDDULRRDDUULDRLDLULRRDULUDUUURUURDDDRULRLRDLRRURR +UDDDRLDRDULDRLRDUDDLDLLDDLUUURDDDLUDRDUDLDURLUURUDUULUUULDUURLULLRLUDLLURUUUULRLRLLLRRLULLDRUULURRLLUDUDURULLLRRRRLRUULLRDRDRRDDLUDRRUULUDRUULRDLRDRRLRRDRRRLULRULUURRRULLRRRURUDUURRLLDDDUDDULUULRURUDUDUDRLDLUULUDDLLLLDRLLRLDULLLRLLDLUUDURDLLRURUUDDDDLLUDDRLUUDUDRDRLLURURLURRDLDDDULUURURURRLUUDUDLDLDDULLURUDLRLDLRLDLDUDULURDUDRLURRRULLDDDRDRURDDLDLULUDRUULDLULRDUUURLULDRRULLUDLDRLRDDUDURRRURRLRDUULURUUDLULDLRUUULUDRDRRUDUDULLDDRLRDLURDLRLUURDRUDRDRUDLULRUDDRDLLLRLURRURRLDDDUDDLRDRRRULLUUDULURDLDRDDDLDURRLRRDLLDDLULULRRDUDUUDUULRDRRDURDDDDUUDDLUDDUULDRDDULLUUUURRRUUURRULDRRDURRLULLDU \ No newline at end of file diff --git a/inputs/2_test b/inputs/2_test new file mode 100644 index 0000000..49be97c --- /dev/null +++ b/inputs/2_test @@ -0,0 +1,4 @@ +ULL +RRDDD +LURDL +UUUUD \ No newline at end of file diff --git a/main.go b/main.go index 54af919..ea85c46 100644 --- a/main.go +++ b/main.go @@ -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},