mirror of
https://github.com/Threnklyn/advent-of-code-go.git
synced 2026-05-18 19:13:27 +02:00
cleanup
This commit is contained in:
+7
-21
@@ -50,37 +50,23 @@ func part2(input string) int {
|
|||||||
return ans
|
return ans
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseInput(input string) (grid [][]bool) {
|
func parseInput(input string) (grid [][]string) {
|
||||||
lines := strings.Split(input, "\n")
|
lines := strings.Split(input, "\n")
|
||||||
|
|
||||||
grid = make([][]bool, len(lines))
|
grid = make([][]string, len(lines))
|
||||||
for i, l := range lines {
|
for i, l := range lines {
|
||||||
grid[i] = make([]bool, len(l))
|
grid[i] = strings.Split(l, "")
|
||||||
for j, v := range l {
|
|
||||||
if v == '#' {
|
|
||||||
grid[i][j] = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return grid
|
return grid
|
||||||
}
|
}
|
||||||
|
|
||||||
func rideSlopes(grid [][]bool, right, down int) int {
|
func rideSlopes(grid [][]string, right, down int) int {
|
||||||
var row, col int
|
|
||||||
var ans int
|
var ans int
|
||||||
|
|
||||||
for {
|
for row, col := 0, 0; row < len(grid); row, col = row+down, col+right {
|
||||||
row += down
|
if grid[row][col%len(grid[0])] == "#" {
|
||||||
col += right
|
ans++
|
||||||
col %= len(grid[0])
|
|
||||||
|
|
||||||
if row < len(grid) {
|
|
||||||
if grid[row][col] {
|
|
||||||
ans++
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,25 +65,3 @@ func TestPart2(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_rideSlopes(t *testing.T) {
|
|
||||||
type args struct {
|
|
||||||
grid [][]bool
|
|
||||||
right int
|
|
||||||
down int
|
|
||||||
}
|
|
||||||
tests := []struct {
|
|
||||||
name string
|
|
||||||
args args
|
|
||||||
want int
|
|
||||||
}{
|
|
||||||
// TODO: Add test cases.
|
|
||||||
}
|
|
||||||
for _, tt := range tests {
|
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
|
||||||
if got := rideSlopes(tt.args.grid, tt.args.right, tt.args.down); got != tt.want {
|
|
||||||
t.Errorf("rideSlopes() = %v, want %v", got, tt.want)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
Executable
+92
@@ -0,0 +1,92 @@
|
|||||||
|
|
||||||
|
--- Day 3: Toboggan Trajectory ---
|
||||||
|
With the toboggan login problems resolved, you set off toward the airport. While travel by toboggan might be easy, it's certainly not safe: there's very minimal steering and the area is covered in trees. You'll need to see which angles will take you near the fewest trees.
|
||||||
|
|
||||||
|
|
||||||
|
Due to the local geology, trees in this area only grow on exact integer coordinates in a grid. You make a map (your puzzle input) of the open squares (.) and trees (#) you can see. For example:
|
||||||
|
|
||||||
|
|
||||||
|
..##.......
|
||||||
|
#...#...#..
|
||||||
|
.#....#..#.
|
||||||
|
..#.#...#.#
|
||||||
|
.#...##..#.
|
||||||
|
..#.##.....
|
||||||
|
.#.#.#....#
|
||||||
|
.#........#
|
||||||
|
#.##...#...
|
||||||
|
#...##....#
|
||||||
|
.#..#...#.#
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
These aren't the only trees, though; due to something you read about once involving arboreal genetics and biome stability, the same pattern repeats to the right many times:
|
||||||
|
|
||||||
|
|
||||||
|
..##.........##.........##.........##.........##.........##....... --->
|
||||||
|
#...#...#..#...#...#..#...#...#..#...#...#..#...#...#..#...#...#..
|
||||||
|
.#....#..#..#....#..#..#....#..#..#....#..#..#....#..#..#....#..#.
|
||||||
|
..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#
|
||||||
|
.#...##..#..#...##..#..#...##..#..#...##..#..#...##..#..#...##..#.
|
||||||
|
..#.##.......#.##.......#.##.......#.##.......#.##.......#.##..... --->
|
||||||
|
.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#
|
||||||
|
.#........#.#........#.#........#.#........#.#........#.#........#
|
||||||
|
#.##...#...#.##...#...#.##...#...#.##...#...#.##...#...#.##...#...
|
||||||
|
#...##....##...##....##...##....##...##....##...##....##...##....#
|
||||||
|
.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.# --->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
You start on the open square (.) in the top-left corner and need to reach the bottom (below the bottom-most row on your map).
|
||||||
|
|
||||||
|
|
||||||
|
The toboggan can only follow a few specific slopes (you opted for a cheaper model that prefers rational numbers); start by counting all the trees you would encounter for the slope right 3, down 1:
|
||||||
|
|
||||||
|
|
||||||
|
From your starting position at the top-left, check the position that is right 3 and down 1. Then, check the position that is right 3 and down 1 from there, and so on until you go past the bottom of the map.
|
||||||
|
|
||||||
|
|
||||||
|
The locations you'd check in the above example are marked here with O where there was an open square and X where there was a tree:
|
||||||
|
|
||||||
|
|
||||||
|
..##.........##.........##.........##.........##.........##....... --->
|
||||||
|
#..O#...#..#...#...#..#...#...#..#...#...#..#...#...#..#...#...#..
|
||||||
|
.#....X..#..#....#..#..#....#..#..#....#..#..#....#..#..#....#..#.
|
||||||
|
..#.#...#O#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#
|
||||||
|
.#...##..#..X...##..#..#...##..#..#...##..#..#...##..#..#...##..#.
|
||||||
|
..#.##.......#.X#.......#.##.......#.##.......#.##.......#.##..... --->
|
||||||
|
.#.#.#....#.#.#.#.O..#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#
|
||||||
|
.#........#.#........X.#........#.#........#.#........#.#........#
|
||||||
|
#.##...#...#.##...#...#.X#...#...#.##...#...#.##...#...#.##...#...
|
||||||
|
#...##....##...##....##...#X....##...##....##...##....##...##....#
|
||||||
|
.#..#...#.#.#..#...#.#.#..#...X.#.#..#...#.#.#..#...#.#.#..#...#.# --->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
In this example, traversing the map using this slope would cause you to encounter 7 trees.
|
||||||
|
|
||||||
|
|
||||||
|
Starting at the top-left corner of your map and following a slope of right 3 and down 1, how many trees would you encounter?
|
||||||
|
|
||||||
|
|
||||||
|
--- Part Two ---
|
||||||
|
Time to check the rest of the slopes - you need to minimize the probability of a sudden arboreal stop, after all.
|
||||||
|
|
||||||
|
|
||||||
|
Determine the number of trees you would encounter if, for each of the following slopes, you start at the top-left corner and traverse the map all the way to the bottom:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Right 1, down 1.
|
||||||
|
Right 3, down 1. (This is the slope you already checked.)
|
||||||
|
Right 5, down 1.
|
||||||
|
Right 7, down 1.
|
||||||
|
Right 1, down 2.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
In the above example, these slopes would find 2, 7, 3, 4, and 2 tree(s) respectively; multiplied together, these produce the answer 336.
|
||||||
|
|
||||||
|
|
||||||
|
What do you get if you multiply together the number of trees encountered on each of the listed slopes?
|
||||||
|
|
||||||
Reference in New Issue
Block a user