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) }