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
|
||||
}
|
||||
|
||||
func parseInput(input string) (grid [][]bool) {
|
||||
func parseInput(input string) (grid [][]string) {
|
||||
lines := strings.Split(input, "\n")
|
||||
|
||||
grid = make([][]bool, len(lines))
|
||||
grid = make([][]string, len(lines))
|
||||
for i, l := range lines {
|
||||
grid[i] = make([]bool, len(l))
|
||||
for j, v := range l {
|
||||
if v == '#' {
|
||||
grid[i][j] = true
|
||||
}
|
||||
}
|
||||
grid[i] = strings.Split(l, "")
|
||||
}
|
||||
|
||||
return grid
|
||||
}
|
||||
|
||||
func rideSlopes(grid [][]bool, right, down int) int {
|
||||
var row, col int
|
||||
func rideSlopes(grid [][]string, right, down int) int {
|
||||
var ans int
|
||||
|
||||
for {
|
||||
row += down
|
||||
col += right
|
||||
col %= len(grid[0])
|
||||
|
||||
if row < len(grid) {
|
||||
if grid[row][col] {
|
||||
ans++
|
||||
}
|
||||
} else {
|
||||
break
|
||||
for row, col := 0, 0; row < len(grid); row, col = row+down, col+right {
|
||||
if grid[row][col%len(grid[0])] == "#" {
|
||||
ans++
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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