From 397aac8fa6687698db04c8e78a7603d1e38bab0d Mon Sep 17 00:00:00 2001 From: alexchao26 Date: Thu, 3 Dec 2020 21:04:50 -0500 Subject: [PATCH] cleanup --- 2020/day03/main.go | 28 ++++--------- 2020/day03/main_test.go | 22 ---------- 2020/day03/prompt.md | 92 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 43 deletions(-) create mode 100755 2020/day03/prompt.md diff --git a/2020/day03/main.go b/2020/day03/main.go index b67a668..978ab6a 100644 --- a/2020/day03/main.go +++ b/2020/day03/main.go @@ -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++ } } diff --git a/2020/day03/main_test.go b/2020/day03/main_test.go index a3e3a65..585779b 100644 --- a/2020/day03/main_test.go +++ b/2020/day03/main_test.go @@ -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) - } - }) - } -} diff --git a/2020/day03/prompt.md b/2020/day03/prompt.md new file mode 100755 index 0000000..534253f --- /dev/null +++ b/2020/day03/prompt.md @@ -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? +