From 6ab021face2f996e3a89828a56f5774dd7b63aab Mon Sep 17 00:00:00 2001 From: Alan R Evans Date: Tue, 14 Jan 2025 12:14:43 +0000 Subject: [PATCH] move to alan branch --- 2024/go/day20/day20.go | 128 ++++++++++++++++++++++++++++++++ 2024/go/day20/day20_test.go | 31 ++++++++ 2024/go/day20/input.txt | 141 ++++++++++++++++++++++++++++++++++++ 2024/go/main.go | 2 +- 4 files changed, 301 insertions(+), 1 deletion(-) create mode 100644 2024/go/day20/day20.go create mode 100644 2024/go/day20/day20_test.go create mode 100644 2024/go/day20/input.txt diff --git a/2024/go/day20/day20.go b/2024/go/day20/day20.go new file mode 100644 index 0000000..d3a2c94 --- /dev/null +++ b/2024/go/day20/day20.go @@ -0,0 +1,128 @@ +package day20 + +import ( + "adventofcode2024/utils/dijkstra" + "adventofcode2024/utils/grid2d" + "adventofcode2024/utils/inputs" + "fmt" +) + +type ( + Vec struct{ x, y int } + Dir struct{ x, y int } + Cell rune + Move struct { + p Vec + d Dir + } + Maze struct { + height, width int + start Vec + end Vec + grid *grid2d.Grid[Cell] + } +) + +const ( + WALL Cell = '#' + CORRIDOR Cell = '.' + START Cell = 'S' + END Cell = 'E' + PATH Cell = '*' +) + +var ( + NORTH = Dir{0, -1} + EAST = Dir{1, 0} + SOUTH = Dir{0, 1} + WEST = Dir{-1, 0} + DIRECTIONS = []Dir{NORTH, EAST, SOUTH, WEST} +) + +func Part1(input string) int { + maze := Maze{}.Parse(input) + fmt.Println(maze) + data := inputGraph(*maze) + graph := dijkstra.CreateGraph(data) + path, dist := dijkstra.GetShortestPath(data.From, data.To, graph) + for _, p := range path { + maze.grid.Set(p.X, p.Y, PATH) + } + fmt.Println(maze) + return dist +} +func Part2(input string) int { + maze := Maze{}.Parse(input) + fmt.Println(maze) + data := inputGraph(*maze) + graph := dijkstra.CreateGraph(data) + _, count := dijkstra.GetShortestPath(data.From, data.To, graph) + return count +} + +func inputGraph(maze Maze) dijkstra.InputGraph { + data := dijkstra.InputGraph{} + data.From = dijkstra.Point{X: maze.start.x, Y: maze.start.y} + data.To = dijkstra.Point{X: maze.end.x, Y: maze.end.y} + for y := 0; y < maze.height; y++ { + for x := 0; x < maze.width; x++ { + if maze.grid.Get(x, y) == WALL { + continue + } + for _, dir := range DIRECTIONS { + nx, ny := x+dir.x, y+dir.y + if nx < 0 || ny < 0 || nx >= maze.width || ny >= maze.height { + continue + } + if maze.grid.Get(nx, ny) == WALL { + continue + } + data.Graph = append(data.Graph, dijkstra.InputData{ + Source: dijkstra.Point{X: x, Y: y}, + Destination: dijkstra.Point{X: nx, Y: ny}, + Weight: 1, + }) + } + } + } + + return data +} + +func (m Maze) Parse(input string) *Maze { + m.grid = inputs.ToGrid2D(input, "\n", "", '?', func(c string) Cell { return Cell(c[0]) }) + m.height, m.width = m.grid.SizeY(), m.grid.SizeX() + for y := 0; y < m.height; y++ { + for x := 0; x < m.width; x++ { + c := m.grid.Get(x, y) + switch c { + case WALL, CORRIDOR: + m.grid.Set(x, y, c) + case START: + m.grid.Set(x, y, CORRIDOR) + m.start = Vec{x, y} + case END: + m.grid.Set(x, y, CORRIDOR) + m.end = Vec{x, y} + } + } + } + return &m +} + +func (m *Maze) String() string { + s := "" + for y := 0; y < m.height; y++ { + for x := 0; x < m.width; x++ { + if y == m.start.y && x == m.start.x { + s += string(START) + } else if y == m.end.y && x == m.end.x { + s += string(END) + } else { + s += string(m.grid.Get(x, y)) + } + } + s += "\n" + } + return s +} diff --git a/2024/go/day20/day20_test.go b/2024/go/day20/day20_test.go new file mode 100644 index 0000000..0174040 --- /dev/null +++ b/2024/go/day20/day20_test.go @@ -0,0 +1,31 @@ +package day20 + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestPart1(t *testing.T) { + r := Part1(`############### +#...#...#.....# +#.#.#.#.#.###.# +#S#...#.#.#...# +#######.#.#.### +#######.#.#...# +#######.#.###.# +###..E#...#...# +###.#######.### +#...###...#...# +#.#####.#.###.# +#.#...#.#.#...# +#.#.#.#.#.#.### +#...#...#...### +###############`) + require.Equal(t, 100, r) +} + +func TestPart2(t *testing.T) { + r := Part2("") + require.Equal(t, 0, r) +} diff --git a/2024/go/day20/input.txt b/2024/go/day20/input.txt new file mode 100644 index 0000000..488b75f --- /dev/null +++ b/2024/go/day20/input.txt @@ -0,0 +1,141 @@ +############################################################################################################################################# +#.........#...#...###...#...###...###...###...........#.....#...#.....#...###...#...#...#...#...###...#.....#.......#...###.............#...# +#.#######.#.#.#.#.###.#.#.#.###.#.###.#.###.#########.#.###.#.#.#.###.#.#.###.#.#.#.#.#.#.#.#.#.###.#.#.###.#.#####.#.#.###.###########.#.#.# +#.......#.#.#.#.#.#...#...#.#...#...#.#.....#...#...#.#...#.#.#.#...#.#.#.#...#...#.#.#.#.#.#.#...#.#.#.#...#...#...#.#.#...#...#.......#.#.# +#######.#.#.#.#.#.#.#######.#.#####.#.#######.#.#.#.#.###.#.#.#.###.#.#.#.#.#######.#.#.#.#.#.###.#.#.#.#.#####.#.###.#.#.###.#.#.#######.#.# +###...#.#.#.#.#.#.#.......#...#...#.#.#.......#...#...#...#.#.#.###.#.#.#.#.#.......#.#.#.#.#...#.#.#...#.#...#.#.#...#.#.#...#...###...#.#.# +###.#.#.#.#.#.#.#.#######.#####.#.#.#.#.###############.###.#.#.###.#.#.#.#.#.#######.#.#.#.###.#.#.#####.#.#.#.#.#.###.#.#.#########.#.#.#.# +#...#...#.#.#.#.#.###...#.....#.#...#.#.#...#...#...###...#.#.#.....#.#.#...#.......#.#.#.#.#...#.#.....#.#.#.#.#...#...#.#.#...#...#.#.#.#.# +#.#######.#.#.#.#.###.#.#####.#.#####.#.#.#.#.#.#.#.#####.#.#.#######.#.###########.#.#.#.#.#.###.#####.#.#.#.#.#####.###.#.#.#.#.#.#.#.#.#.# +#...#.....#.#...#.....#.#.....#...#...#.#.#.#.#...#.#.....#.#.......#.#.#...........#.#.#.#.#...#.......#...#.#.....#...#.#.#.#.#.#.#.#...#.# +###.#.#####.###########.#.#######.#.###.#.#.#.#####.#.#####.#######.#.#.#.###########.#.#.#.###.#############.#####.###.#.#.#.#.#.#.#.#####.# +#...#.#...#...........#.#.....#...#...#.#.#...#.....#.#...#...###...#.#.#.###...#...#.#.#.#...#.#...#.......#.###...#...#.#...#...#...#.....# +#.###.#.#.###########.#.#####.#.#####.#.#.#####.#####.#.#.###.###.###.#.#.###.#.#.#.#.#.#.###.#.#.#.#.#####.#.###.###.###.#############.##### +#...#.#.#.###.....#...#.......#.....#.#.#...#...#...#...#...#...#...#.#.#...#.#.#.#...#.#.#...#...#...#...#.#.#...#...#...#...#.........#...# +###.#.#.#.###.###.#.###############.#.#.###.#.###.#.#######.###.###.#.#.###.#.#.#.#####.#.#.###########.#.#.#.#.###.###.###.#.#.#########.#.# +#...#...#.....#...#...#...........#.#.#.....#...#.#.###...#.#...###.#.#.#...#.#...#.....#.#.#...#####...#.#.#.#.#...#...#...#.#...........#.# +#.#############.#####.#.#########.#.#.#########.#.#.###.#.#.#.#####.#.#.#.###.#####.#####.#.#.#.#####.###.#.#.#.#.###.###.###.#############.# +#.......#.....#...###...#...#.....#.#.....#.....#.#...#.#.#.#.......#...#...#.....#.#...#.#.#.#...#...#...#.#.#.#.....#...###.......#.......# +#######.#.###.###.#######.#.#.#####.#####.#.#####.###.#.#.#.###############.#####.#.#.#.#.#.#.###.#.###.###.#.#.#######.###########.#.####### +#.....#...###...#...###...#.#.#...#.#.....#...###.#...#.#.#.......#.......#...#...#.#.#.#.#.#...#.#...#.#...#...#.....#.........###.#.......# +#.###.#########.###.###.###.#.#.#.#.#.#######.###.#.###.#.#######.#.#####.###.#.###.#.#.#.#.###.#.###.#.#.#######.###.#########.###.#######.# +#...#...###...#...#...#...#...#.#...#.......#.....#.###.#.....###...#.....#...#.#...#.#...#.#...#.#...#.#.#.......###.#.......#.#...#...#...# +###.###.###.#.###.###.###.#####.###########.#######.###.#####.#######.#####.###.#.###.#####.#.###.#.###.#.#.#########.#.#####.#.#.###.#.#.### +#...#...#...#...#...#...#.....#...#.....#...#.......#...#.....#.....#.....#.#...#.#...#.....#...#.#...#.#.#.........#.#.....#...#.....#...### +#.###.###.#####.###.###.#####.###.#.###.#.###.#######.###.#####.###.#####.#.#.###.#.###.#######.#.###.#.#.#########.#.#####.################# +#...#...#.....#.###...#.#...#...#.#.#...#...#.###...#...#.....#...#...#...#...#...#...#.....#...#.#...#...#.....#...#.......#...#.....#.....# +###.###.#####.#.#####.#.#.#.###.#.#.#.#####.#.###.#.###.#####.###.###.#.#######.#####.#####.#.###.#.#######.###.#.###########.#.#.###.#.###.# +#...#...###...#.#.....#...#.....#.#.#.#.....#...#.#.#...#.....#...#...#...#.....#####.....#...#...#...#.....###...#...###...#.#...#...#.#...# +#.###.#####.###.#.###############.#.#.#.#######.#.#.#.###.#####.###.#####.#.#############.#####.#####.#.###########.#.###.#.#.#####.###.#.### +#.#...#...#...#.#.......#...#...#...#.#.#.......#.#...#...#...#...#.#####.#.#...###...###...#...#...#.#...#.....###.#.....#.#.#.....###.#...# +#.#.###.#.###.#.#######.#.#.#.#.#####.#.#.#######.#####.###.#.###.#.#####.#.#.#.###.#.#####.#.###.#.#.###.#.###.###.#######.#.#.#######.###.# +#.#...#.#...#.#.#.......#.#...#.#...#.#.#.#.....#.....#.....#.#...#...#...#.#.#...#.#.#.....#...#.#.#.#...#.#...#...#.......#.#.........#...# +#.###.#.###.#.#.#.#######.#####.#.#.#.#.#.#.###.#####.#######.#.#####.#.###.#.###.#.#.#.#######.#.#.#.#.###.#.###.###.#######.###########.### +#.#...#.#...#.#...#.......#...#.#.#.#.#.#.#.#...#...#.......#.#...#...#...#.#.#...#.#.#.....#...#.#.#.#.###.#.....#...#...###.#.........#...# +#.#.###.#.###.#####.#######.#.#.#.#.#.#.#.#.#.###.#.#######.#.###.#.#####.#.#.#.###.#.#####.#.###.#.#.#.###.#######.###.#.###.#.#######.###.# +#.#.#...#...#.......#...###.#.#...#.#...#.#.#.#...#...#...#.#...#.#.#...#.#.#.#...#.#.#...#.#.#...#.#.#.....#.....#.....#.....#.......#...#.# +#.#.#.#####.#########.#.###.#.#####.#####.#.#.#.#####.#.#.#.###.#.#.#.#.#.#.#.###.#.#.#.#.#.#.#.###.#.#######.###.###################.###.#.# +#.#.#.....#.#...#.....#...#.#.....#.....#.#.#.#...#...#.#.#...#.#.#...#.#.#...###...#...#.#.#...###.#...#.....###...#.......#...#...#.#...#.# +#.#.#####.#.#.#.#.#######.#.#####.#####.#.#.#.###.#.###.#.###.#.#.#####.#.###############.#.#######.###.#.#########.#.#####.#.#.#.#.#.#.###.# +#.#.......#.#.#.#.......#.#.....#.......#...#...#.#.#...#...#.#...#.....#...........#.....#...#...#.....#.........#.#.....#.#.#...#.#.#...#.# +#.#########.#.#.#######.#.#####.###############.#.#.#.#####.#.#####.###############.#.#######.#.#.###############.#.#####.#.#.#####.#.###.#.# +#.........#.#.#.#...#...#...###.............#...#.#.#...#...#.#.....#.....#.....#...#.....#...#.#.................#.......#...#...#...#...#.# +#########.#.#.#.#.#.#.#####.###############.#.###.#.###.#.###.#.#####.###.#.###.#.#######.#.###.###############################.#.#####.###.# +#.........#...#...#...#...#...#.........#...#...#.#.#...#...#.#...#...#E..#...#.#...#.....#...#.....#...........................#.....#...#.# +#.#####################.#.###.#.#######.#.#####.#.#.#.#####.#.###.#.#########.#.###.#.#######.#####.#.###############################.###.#.# +#.........#...#.........#.#...#.......#.#.....#...#.#.#...#...###...#########.#.#...#.#...#...#.....#.#.........#.............#...#...#...#.# +#########.#.#.#.#########.#.#########.#.#####.#####.#.#.#.###################.#.#.###.#.#.#.###.#####.#.#######.#.###########.#.#.#.###.###.# +#.........#.#.#.#.........#.....###...#.#.....#.....#...#.....###############.#.#.#...#.#.#...#.......#.......#...#.........#...#.#...#.....# +#.#########.#.#.#.#############.###.###.#.#####.#############.###############.#.#.#.###.#.###.###############.#####.#######.#####.###.####### +#.........#.#.#.#.......#.....#.....###...#...#.....#...#.....###############.#...#.#...#...#.#...............#...#.#.....#.....#...#.#.....# +#########.#.#.#.#######.#.###.#############.#.#####.#.#.#.###################.#####.#.#####.#.#.###############.#.#.#.###.#####.###.#.#.###.# +#.........#.#.#.#.....#...###.......#...#...#.....#.#.#.#.....###############.....#...#...#...#...#.............#...#...#.......#...#...#...# +#.#########.#.#.#.###.#############.#.#.#.#######.#.#.#.#####.###################.#####.#.#######.#.###################.#########.#######.### +#...#...#...#...#...#.............#...#...#.......#...#.#.....###################.....#.#.........#.#...........#.......#.....###.......#...# +###.#.#.#.#########.#############.#########.###########.#.###########################.#.###########.#.#########.#.#######.###.#########.###.# +###...#...#.........#...#.......#.....#...#.....#...#...#.....###################...#.#...#.........#.........#...#...#...#...#...#...#.....# +###########.#########.#.#.#####.#####.#.#.#####.#.#.#.#######.###################.#.#.###.#.#################.#####.#.#.###.###.#.#.#.####### +#...###...#...........#...#.....#...#...#.......#.#.#.........###################.#...###...#...............#.......#.#.#...###.#...#.......# +#.#.###.#.#################.#####.#.#############.#.#############################.###########.#############.#########.#.#.#####.###########.# +#.#...#.#.#...#...#.........#.....#...............#.......#...###################...#...#...#.....#.......#.....#...#...#.#...#.#...........# +#.###.#.#.#.#.#.#.#.#########.###########################.#.#.#####################.#.#.#.#.#####.#.#####.#####.#.#.#####.#.#.#.#.########### +#...#...#...#.#.#.#...#.......#...#...#...#...#...#...#...#.#...#############...#...#.#...#.......#.#.....#...#...#.....#...#...#.....#.....# +###.#########.#.#.###.#.#######.#.#.#.#.#.#.#.#.#.#.#.#.###.###.#############.#.#.###.#############.#.#####.#.#########.#############.#.###.# +###.....#...#...#.###...#...#...#...#...#.#.#...#.#.#...#...#...#############.#.#.#...#...#.........#.......#...#.....#...............#.#...# +#######.#.#.#####.#######.#.#.###########.#.#####.#.#####.###.###############.#.#.#.###.#.#.###################.#.###.#################.#.### +###...#...#.....#.....#...#...#.....#...#...#...#...#...#...#.###############.#...#.....#.#.#.........###.......#.#...#.......#...###...#...# +###.#.#########.#####.#.#######.###.#.#.#####.#.#####.#.###.#.###############.###########.#.#.#######.###.#######.#.###.#####.#.#.###.#####.# +#...#...........#...#...#...#...###...#...#...#.......#.....#...#...###...#S..###...#...#...#...#...#.....#...#...#...#.#.....#.#...#.#...#.# +#.###############.#.#####.#.#.###########.#.###################.#.#.###.#.#######.#.#.#.#######.#.#.#######.#.#.#####.#.#.#####.###.#.#.#.#.# +#...#.....#...#...#...#...#...#.......#...#...#...........#...#...#.....#...#.....#.#.#.###...#...#.........#...#...#...#...###.#...#.#.#...# +###.#.###.#.#.#.#####.#.#######.#####.#.#####.#.#########.#.#.#############.#.#####.#.#.###.#.###################.#.#######.###.#.###.#.##### +###...#...#.#.#.#...#...#...###.....#.#...#...#.....#...#.#.#.#...#.....#...#...#...#.#.....#.......#...........#.#.#.....#.....#.....#.....# +#######.###.#.#.#.#.#####.#.#######.#.###.#.#######.#.#.#.#.#.#.#.#.###.#.#####.#.###.#############.#.#########.#.#.#.###.#################.# +###...#.....#...#.#.......#.......#.#.....#.#.......#.#.#...#...#.#...#.#.#.....#...#.............#.#.........#...#...###.....#.....#.......# +###.#.###########.###############.#.#######.#.#######.#.#########.###.#.#.#.#######.#############.#.#########.###############.#.###.#.####### +#...#.#...#...###...............#.#.....#...#.#...#...#.....#.....#...#...#.......#...#...#.......#.....#...#.........#...###...###.#.......# +#.###.#.#.#.#.#################.#.#####.#.###.#.#.#.#######.#.#####.#############.###.#.#.#.###########.#.#.#########.#.#.#########.#######.# +#...#.#.#...#...................#.....#.#...#...#...#.......#.......###.....#...#...#.#.#.#...........#...#.#.......#...#.........#.#.......# +###.#.#.#############################.#.###.#########.#################.###.#.#.###.#.#.#.###########.#####.#.#####.#############.#.#.####### +#...#...#.....#.....................#.#.....#.......#.......#.....#...#...#...#.....#...#.....#.....#.....#.#.....#...#...#...#...#.#.#...### +#.#######.###.#.###################.#.#######.#####.#######.#.###.#.#.###.###################.#.###.#####.#.#####.###.#.#.#.#.#.###.#.#.#.### +#...#.....###.#.#.................#.#.#.....#.#...#.......#...#...#.#.###.........#...#.....#.#...#.###...#.....#...#.#.#.#.#...#...#...#...# +###.#.#######.#.#.###############.#.#.#.###.#.#.#.#######.#####.###.#.###########.#.#.#.###.#.###.#.###.#######.###.#.#.#.#.#####.#########.# +###.#.#.....#...#...............#...#.#.#...#...#.......#.......#...#.#...#...#...#.#.#.#...#.###.#...#.......#.....#...#...#...#.....#...#.# +###.#.#.###.###################.#####.#.#.#############.#########.###.#.#.#.#.#.###.#.#.#.###.###.###.#######.###############.#.#####.#.#.#.# +#...#.#...#.#...###.............#...#...#...#.....#...#...#...###...#...#.#.#.#...#.#.#.#...#.....#...#.......#.......#...###.#...###...#...# +#.###.###.#.#.#.###.#############.#.#######.#.###.#.#.###.#.#.#####.#####.#.#.###.#.#.#.###.#######.###.#######.#####.#.#.###.###.########### +#.....###.#.#.#.#...#.....#.......#.......#.#...#...#.....#.#.....#...#...#.#...#...#...###...#...#...#.......#.#.....#.#...#...#.#.........# +#########.#.#.#.#.###.###.#.#############.#.###.###########.#####.###.#.###.###.#############.#.#.###.#######.#.#.#####.###.###.#.#.#######.# +#...#.....#.#.#.#.....#...#.#.............#.#...#.......###.#.....#...#...#...#...#...#...###...#...#.......#.#.#...###...#.....#.#.#.......# +#.#.#.#####.#.#.#######.###.#.#############.#.###.#####.###.#.#####.#####.###.###.#.#.#.#.#########.#######.#.#.###.#####.#######.#.#.####### +#.#.#.....#.#.#.#...###.....#...#...#...###.#...#.....#.#...#...#...#.....#...#...#.#.#.#.#...#.....#.....#...#.#...#...#.#.....#...#.......# +#.#.#####.#.#.#.#.#.###########.#.#.#.#.###.###.#####.#.#.#####.#.###.#####.###.###.#.#.#.#.#.#.#####.###.#####.#.###.#.#.#.###.###########.# +#.#.#.....#...#...#.#...#.....#...#...#...#.#...#.....#.#.....#.#.#...#...#.#...###.#.#.#.#.#.#.......###.......#.....#...#...#.#...#...#...# +#.#.#.#############.#.#.#.###.###########.#.#.###.#####.#####.#.#.#.###.#.#.#.#####.#.#.#.#.#.###############################.#.#.#.#.#.#.### +#.#.#.....#.......#.#.#.#...#.#...........#...###.....#...###.#.#.#...#.#...#.....#.#...#.#.#...#...........#.....#...#...#...#...#.#.#...### +#.#.#####.#.#####.#.#.#.###.#.#.#####################.###.###.#.#.###.#.#########.#.#####.#.###.#.#########.#.###.#.#.#.#.#.#######.#.####### +#.#.......#.#.....#...#...#.#.#.................#.....#...#...#.#.#...#.........#.#...#...#...#.#.........#.#...#...#...#.#.......#.#...#...# +#.#########.#.###########.#.#.#################.#.#####.###.###.#.#.###########.#.###.#.#####.#.#########.#.###.#########.#######.#.###.#.#.# +#.#.........#...........#...#.....#.............#.....#.#...#...#.#.###...#.....#.#...#.#.....#.#...#.....#.....###...###.........#.....#.#.# +#.#.###################.#########.#.#################.#.#.###.###.#.###.#.#.#####.#.###.#.#####.#.#.#.#############.#.###################.#.# +#...#.......###...#.....#...#...#...#.....#.....#.....#.#...#.#...#...#.#.#.#...#.#.#...#...#...#.#.#...........#...#.....###...###.......#.# +#####.#####.###.#.#.#####.#.#.#.#####.###.#.###.#.#####.###.#.#.#####.#.#.#.#.#.#.#.#.#####.#.###.#.###########.#.#######.###.#.###.#######.# +###...#...#.....#...#...#.#...#.....#.#...#...#.#.....#.###.#.#...#...#.#.#...#.#.#.#.#...#.#.###.#.#...#.....#...#.......#...#.....#.......# +###.###.#.###########.#.#.#########.#.#.#####.#.#####.#.###.#.###.#.###.#.#####.#.#.#.#.#.#.#.###.#.#.#.#.###.#####.#######.#########.####### +#...#...#.......#...#.#...###.......#.#...#...#...#...#.#...#.#...#.#...#...#...#.#.#.#.#.#.#.#...#...#.#...#.#...#.#...#...#.....#...#.....# +#.###.#########.#.#.#.#######.#######.###.#.#####.#.###.#.###.#.###.#.#####.#.###.#.#.#.#.#.#.#.#######.###.#.#.#.#.#.#.#.###.###.#.###.###.# +#...#.#.........#.#.#.#.......#.....#.#...#...###...###.#...#.#.#...#.#.....#.###.#.#.#.#.#.#.#.....###...#.#.#.#.#...#.#...#.###.#.###.#...# +###.#.#.#########.#.#.#.#######.###.#.#.#####.#########.###.#.#.#.###.#.#####.###.#.#.#.#.#.#.#####.#####.#.#.#.#.#####.###.#.###.#.###.#.### +###...#.......#...#.#.#.#.......#...#.#...#...#.........#...#.#.#.....#.#...#...#.#.#.#.#.#.#.#.....#.....#.#.#.#.....#.....#...#.#.....#...# +#############.#.###.#.#.#.#######.###.###.#.###.#########.###.#.#######.#.#.###.#.#.#.#.#.#.#.#.#####.#####.#.#.#####.#########.#.#########.# +#...#.........#.###...#...#.......#...###.#.###...#.....#.#...#.......#...#.#...#.#.#.#.#.#.#.#.#.....#...#.#.#.....#...#...#...#.....#...#.# +#.#.#.#########.###########.#######.#####.#.#####.#.###.#.#.#########.#####.#.###.#.#.#.#.#.#.#.#.#####.#.#.#.#####.###.#.#.#.#######.#.#.#.# +#.#.#.....#...#.......#.....#...#...#...#.#.#.....#...#...#...#.....#.#.....#...#...#.#.#...#...#...#...#.#.#...#...###.#.#.#.......#.#.#.#.# +#.#.#####.#.#.#######.#.#####.#.#.###.#.#.#.#.#######.#######.#.###.#.#.#######.#####.#.###########.#.###.#.###.#.#####.#.#.#######.#.#.#.#.# +#.#.......#.#.#.......#.....#.#.#.#...#...#.#.#...#...###.....#.###...#.....#...#...#...#...........#.###.#...#.#.#.....#.#.........#.#.#.#.# +#.#########.#.#.###########.#.#.#.#.#######.#.#.#.#.#####.#####.###########.#.###.#.#####.###########.###.###.#.#.#.#####.###########.#.#.#.# +#...........#.#.###...###...#.#.#.#...#.....#...#.#.#.....#...#.......#.....#.....#.....#...........#...#...#.#...#.#...#...###.....#.#.#.#.# +#############.#.###.#.###.###.#.#.###.#.#########.#.#.#####.#.#######.#.###############.###########.###.###.#.#####.#.#.###.###.###.#.#.#.#.# +#...#.......#.#.....#...#.#...#.#.###...###.......#.#.......#...#.....#...#...#...#...#...#.........#...###.#...#...#.#...#...#...#.#...#...# +#.#.#.#####.#.#########.#.#.###.#.#########.#######.###########.#.#######.#.#.#.#.#.#.###.#.#########.#####.###.#.###.###.###.###.#.######### +#.#.#.....#...#.....#...#.#...#.#.#.........#...#...#.........#...#...#...#.#.#.#...#...#.#.#.......#.....#.#...#.#...#...#...###.#.........# +#.#.#####.#####.###.#.###.###.#.#.#.#########.#.#.###.#######.#####.#.#.###.#.#.#######.#.#.#.#####.#####.#.#.###.#.###.###.#####.#########.# +#.#.......#...#...#.#.#...#...#.#.#.#.....#...#.#...#...#...#...###.#...#...#.#.......#.#.#...#.....#.....#.#...#.#...#...#.......#...#...#.# +#.#########.#.###.#.#.#.###.###.#.#.#.###.#.###.###.###.#.#.###.###.#####.###.#######.#.#.#####.#####.#####.###.#.###.###.#########.#.#.#.#.# +#.#.......#.#.#...#.#.#...#...#...#...#...#.#...#...#...#.#...#.....#.....###.#.......#...#.....#...#.....#.....#.....###.......#...#...#.#.# +#.#.#####.#.#.#.###.#.###.###.#########.###.#.###.###.###.###.#######.#######.#.###########.#####.#.#####.#####################.#.#######.#.# +#.#.#.....#.#.#.###...###...#...###...#.....#...#...#...#.###...#...#.......#.#...#.......#.#.....#.#...#...............#.......#.....###...# +#.#.#.#####.#.#.###########.###.###.#.#########.###.###.#.#####.#.#.#######.#.###.#.#####.#.#.#####.#.#.###############.#.###########.####### +#.#.#...#...#.#.....#...#...#...#...#.#...#.....#...###.#.#.....#.#.#...#...#...#...#...#.#.#...#...#.#.#.......#.....#.#...#...#...#...#...# +#.#.###.#.###.#####.#.#.#.###.###.###.#.#.#.#####.#####.#.#.#####.#.#.#.#.#####.#####.#.#.#.###.#.###.#.#.#####.#.###.#.###.#.#.#.#.###.#.#.# +#...#...#...#.#...#.#.#...#...###...#...#...#...#...#...#.#.#...#.#.#.#.#.....#...#...#...#...#.#...#.#.#.....#.#...#...#...#.#.#.#.#...#.#.# +#####.#####.#.#.#.#.#.#####.#######.#########.#.###.#.###.#.#.#.#.#.#.#.#####.###.#.#########.#.###.#.#.#####.#.###.#####.###.#.#.#.#.###.#.# +#...#...#...#.#.#...#.#...#.###.....#...#.....#.#...#...#.#...#...#...#.#...#.###.#.....#####...###.#.#.......#.#...#.....#...#.#.#.#.....#.# +#.#.###.#.###.#.#####.#.#.#.###.#####.#.#.#####.#.#####.#.#############.#.#.#.###.#####.###########.#.#########.#.###.#####.###.#.#.#######.# +#.#.....#...#.#.#.....#.#.#...#...#...#...#.....#...###.#.###...........#.#...#...#...#...#...#.....#.........#.#.###.....#.###.#.#.#...#...# +#.#########.#.#.#.#####.#.###.###.#.#######.#######.###.#.###.###########.#####.###.#.###.#.#.#.#############.#.#.#######.#.###.#.#.#.#.#.### +#.#...#...#.#.#.#...#...#...#...#.#.#.......#...#...#...#.#...#...#...#...#.....#...#...#...#.#...#...#...#...#.#.#.......#...#.#.#.#.#.#...# +#.#.#.#.#.#.#.#.###.#.#####.###.#.#.#.#######.#.#.###.###.#.###.#.#.#.#.###.#####.#####.#####.###.#.#.#.#.#.###.#.#.#########.#.#.#.#.#.###.# +#...#...#...#...###...#####.....#...#.........#...###.....#.....#...#...###.......#####.......###...#...#...###...#...........#...#...#.....# +############################################################################################################################################# diff --git a/2024/go/main.go b/2024/go/main.go index be5c3e7..d5d0946 100644 --- a/2024/go/main.go +++ b/2024/go/main.go @@ -99,7 +99,7 @@ func main() { // Reads day from os.Args. func day() int { - latest := 18 + latest := 19 if len(os.Args) == 1 { return latest }