From 92b59337b3caf7d06d066e1be1dbc2de174ede1e Mon Sep 17 00:00:00 2001 From: Brett Parker Date: Thu, 3 Dec 2020 09:42:03 +0000 Subject: [PATCH] Day 3 --- day3/count_trees.py | 27 ++++ day3/count_trees_2.py | 36 +++++ day3/input.txt | 323 ++++++++++++++++++++++++++++++++++++++++++ day3/summary.txt | 77 ++++++++++ day3/test.txt | 11 ++ 5 files changed, 474 insertions(+) create mode 100644 day3/count_trees.py create mode 100644 day3/count_trees_2.py create mode 100644 day3/input.txt create mode 100644 day3/summary.txt create mode 100644 day3/test.txt diff --git a/day3/count_trees.py b/day3/count_trees.py new file mode 100644 index 0000000..ea16e71 --- /dev/null +++ b/day3/count_trees.py @@ -0,0 +1,27 @@ +#!/usr/bin/python3 + +trees_count = 0 +position = 3 # forth square in, we moved 3 right from where we were, 0 + 3 -> 3 +on_first_line = True +line_number = 0 + +for line in open("input.txt", "r"): + line_number += 1 + print("line: ", line_number) + line = line.rstrip() + print(line) + if on_first_line: + on_first_line = False + continue + print(line[position], position) + if line[position] == "#": + trees_count += 1 + print("hit tree") + else: + print("missed tree") + # now add 3 to the position + position += 3 + if position >= len(line): + position = position - len(line) + +print("There were", trees_count, "trees") diff --git a/day3/count_trees_2.py b/day3/count_trees_2.py new file mode 100644 index 0000000..84a3883 --- /dev/null +++ b/day3/count_trees_2.py @@ -0,0 +1,36 @@ +#!/usr/bin/python3 + +trees_count = [] +on_first_line = True +line_number = 0 + +move_types = ((1,1), (3,1), (5,1), (7,1), (1,2)) + +for move in move_types: + line_offset = 0 + tree_count = 0 + position = move[0] + first_line = True + for line in open("input.txt", "r"): + line = line.rstrip() + print(move[1], line_offset) + if line_offset < move[1] or first_line: + line_offset += 1 + if line_offset >= move[1]: + first_line = False + continue + line_offset = 1 + if line[position] == "#": + tree_count += 1 + position += move[0] + if position >= len(line): + position = position - len(line) + trees_count.append(tree_count) + tree_count = 0 + +mult_result = 1 +for x in trees_count: + print(x) + mult_result *= x + +print("There were", mult_result, "trees") diff --git a/day3/input.txt b/day3/input.txt new file mode 100644 index 0000000..8ffc29d --- /dev/null +++ b/day3/input.txt @@ -0,0 +1,323 @@ +.......#..#....#...#...#......# +..##..#...##.###.#..#.....#.#.. +#..#.#....#......#..#.........# +.#..##...#........#....#..#..#. +#.#.#....###...#........#.....# +.#...#.#.##.#.##...#.#......... +####......#.......###.##.#..... +..#...........#...#.#.#........ +.#.......#....###.####..#...... +...##........#....##.......##.. +.###......##.#......##....#.#.# +........#.#......##...#......#. +#....##.#..#...#.......#....... +.#..##........##.........#....# +.#..#..#...#....#.#......#.#... +..#.#......##.#.......#....##.. +......##......#.#..##.#..#...#. +.....##.......#.#....#.#....... +........#.....#.....#..###.#... +#........#..#.....#...#.#.#..#. +.#..#.....#...#........#.....#. +.#.#.....#.....#...#........... +.....#.#..#..#...#..#..#..##..# +##.#...#....#..#.##..#.....#.#. +#.......####......#..#.#....#.. +......#.#...####.........#.#..# +.#.........#..#.#...#.......... +...#####.#....#.#..#......#.#.# +##....#.###....##...##..#.....# +...........####.##.#....##.##.. +#.#.#..........#.#..##.#.###### +##...#..#...........###..#....# +.#.#.#...##..........##.#...#.. +...#.#........#..##...#....#... +......#..#...#..##....#.......# +.#..#.......#..#......##....##. +.......#.......#........#..##.. +...#...#...#.##......#.##.#.... +.........#.........#.#.#.##.... +..#...................#....#..# +.........#..#.....#.#...#....#. +#.#.#...#........#..###.#...... +#.#.#.####......##...#...#....# +#...........##..#.#.#....#..#.. +........#..#.#...........##.#.# +.#.........#...........#..#.... +#............##.#..#....##...## +.#....##..#.#....#.......#..#.. +..#.#...#.#......####.......#.. +...#.#.......###......#.....#.. +#......#.......#.#...#.#..##... +...#.....#...##.#.....#.#...... +#.#.#............#..#......#..# +....#...#...##.##.##...##.#.... +..##........#..#........#...##. +.......#..#...#.........#.....# +...........#.#......#...#...... +...##..##..##..###..#..#..#..#. +#..##.......##..#....#....#.#.. +#.#.##.#..##.....#....#.#...... +....#..##......#.#..#....#....# +.#.#.........##...#......##.##. +##...........#..#.....#.###.... +.#.###........#...#....##..#... +......##.....#................. +.#.##..#.#.......#......#.#.#.. +.#...#....#.##..........##.##.. +#...##......####.#....#....#... +.#...#.##.#.#.....#...#........ +.#................#.##.#.###... +...#.#..#.#.....##.....##....#. +..##.#..#..##.....#....#...#.## +........###.##..#..###.....#..# +..##.....#.......#.#...##...... +#.#..###...##.###.##.#..#...#.. +#..#..#.#...#....#...##.....#.# +#..................#........#.. +#.....#.......#.##....##....#.. +...#.............#.....#...#... +...#...#.##..##.....#........#. +.......#........##....###..##.. +.#....#....#.#..#......#....#.# +..........#..#.#.....##...#.##. +.#...##.#...........#.#.......# +..#.##.....#.###.#............. +..#....###..........#.#.#...... +#.....#.####..#.#......#..#.#.# +...#........#..#............... +.###.#.##.....#.#...........#.. +..#....#..#....#..##....#...... +......#..#.....#.#.##.......#.# +###..#...#.#..#....#..##.###..# +.#....##.###........##...##.#.# +........##..##.#....##..#....#. +...#..#....#.#....#...#...##... +#.....#......#.##........#....# +....#....###.##...#.#.##....#.. +......#.##..#.#..........#...#. +...........#...#....##...#....# +......#.#.........#....#.#.#... +.###..........#.###.##....#...# +...##.......#......#....#....#. +#..#...#.#..####...#......#..#. +....##..#.#.........#.......... +.##.###.##....##.####....#...#. +..##.......#........#...#..#... +....#####..........###....#.... +.#.#..#.#.#....#..#............ +........#.....#....#.......##.. +...........##....##..##.....##. +..###........#.#.#..#....##...# +.....#...........##......#..#.. +...##........#.##.#......##..#. +##..#....#............##..#..#. +.#.....#...##.##..............# +#..##........#...#...#......##. +......##.....#.......####.##..# +...#.#....#...#..#............. +..#...#..##.###..#..#.......##. +##....###.......#...#..#....... +#..#.....###.....#.#.........#. +#.#....#.............#...#..... +..#.#.##..........#.....##.#... +.....##......#..#..#.....#..#.. +##.#..#..#.##......###....#..#. +...#............##...#..##..... +.#..#....#.........#......#.##. +.##.##...#..............#..#.## +...#....#...###...#...#....#..# +..#...#..####..#....#.#...##..# +..............##.##.......##... +..##.#..##...........#.#.#...#. +..................##.####.###.. +.#...........#.......#......#.. +.#.#.#...#....#.........##...## +....#..........#.#....#.#.....# +..........#.#..........#.#..... +...........#.....#.#......#.... +........#..#.#.#.#............. +...###...##...##..####.##...... +.#..#......###.....#...#.....#. +.........##............#.#..... +#.#..#.#.#....###.#.#..#..#..## +..........#...#.##.#..#..#....# +#..#.......##....#..##........# +##.#...#....##.............#... +....#........#......##..#..#.## +.................#.#.#.#.#..... +...........#.#.....#.......#... +#.......#.......#............#. +....#...........#.#.##.....#..# +#...#.....#....#..##...#....... +..#.....#.....#.##.##....#..... +.#.#..#...#..#..##.....##..#... +.#.#....#.........####......... +#...#..####.....#...#..##...... +..#...##.#.....#...#.....##.... +.#...#.....#.#.#......#.......# +..#.....##.#..#.#...##......... +##.#...#..#....#....#.##.##...# +.#..#....#..##.#.......#..#.... +...##.#......#...###.......#... +...#..#.........##.####........ +#.#..#..##...........#..#...... +.#...#.#......#.#..........#... +...###...#.......#.....#.#...## +..#....#.#.##..........##...#.. +.....###.........#.....#..##..# +.......##.....#.#.....#.#..##.. +.#.#.###..##.......##...#...... +......#.....#................## +.#......##..##.#.#...#...#...## +.#...#......#.......#.#........ +.#..........###...#..#...#..... +.........##.....#.#..#..#.#...# +#...#...#.........#..#..#....#. +###.......#.#.....#....##...... +.#..#......#..#...........#..#. +..##....##..##...#......#...... +.#........#....#...#....#.....# +.#.......#...#...#..##.#.#..#.. +#...#........#.##.....#.....#.. +#..##.....#..........#...#...## +............#...............#.. +.#.##...#.....#.#..#..#..#..... +.#.#.#...#........#....#...##.. +##......#.....#.###.#...#.#..#. +.........##..#..#.#...#...#...# +#...#.#....#..#..#.....#....... +.......#.###...#.............#. +..#.....#.#.#..###.#....#.....# +....#...#.#....#.#..........#.. +..#......#.###.#.#..#.....#...# +#............#..##...##......#. +#...........#..#....#.###..###. +.#.##.#.#.......#.............# +..............#................ +..#.#.....#.....#...#......#... +.#.#.#..#..#.#...........##.... +.....##.#......#..#.##....#.... +.......##..#.#.#..#............ +..#.....#.....#.###..#.....#.#. +......##.....#..##.#...#.....#. +...#...#....#..#..#........#... +..#.##..#....#.........#.#..#.. +#....#.....###.....#......#.... +##.....#..#..##.........#.##.## +.#.#....#.#..........#......... +.##.#...#..#.......#.##...#.... +...#...#.....#....#...#.#..#... +.....#....#.....#.....#.#...... +...........#.#.......#.......#. +.........##.###.##........#.... +#..##.....#...#.#.............. +.#...#....##........#.#..#....# +..#...#........#...#..#.##.#..# +........#...#.....##.#.#....#.# +#..#.......###.#....#.#.#...... +.......#...##....#...#..##..#.. +.....##........#.#.#..#....##.. +.#....#..#.#...........#......# +...##....#.##.....##.......#... +.##..#..#....#.#....#..#....##. +..#....#.....###.......#..##..# +....#.......#....##..#....#..## +....#......##..#....#.#...#.#.. +.##.#......##.................. +##.#....#........#..#..#...##.# +.......#..#.#...##.....#.#..... +..##.#...........#.#.#..#.#.#.. +.....#....#......#..#.......#.. +#.#...#.####..##.......#..##... +...#....#.....#.##.#..#.##..#.. +.#.......#......##........##.#. +.......#.#...#..#...#..##.#.... +.#....#........#.#.....##..#..# +#..#.....#..#.............#...# +#...#....#..#...###..#...#.#... +.#..#.....#..........#..##.#### +#.#.#.#.##.#.#.....##.#........ +...#....##....#...#..##.......# +..##.##.#.#........#..........# +..###........###..#..........#. +...#......#..##.#........#..#.. +#.#.#..#........#..#..........# +...#........#..##.#...#.###.... +##......#.####.#....#......#... +.#..#......#................#.. +#.#........#.#.....##.....##... +#...............#..#.......#.#. +.##..#...........##..#..#.#.... +#......#.#.......#.#.#.##..#.## +.....##.#..###.............##.. +....##.........#..#...#........ +.....#.....#.#.#..#.#.......... +#.........#....##.#.##.....#..# +.#.........#......#.#.##.#.#... +##.........#.....#..#.#..#.##.# +....#......##...#.....#..#..### +..#..............#...#..####... +#....#...##.#.......#...#..#... +#.......###.#.#.......#.......# +...##....#.#...........#...###. +...........#..#.#.....#..##..#. +..#.........#..###..#.....#...# +..#.#.....#.#.#...#.#.#......#. +........#.....#.#......##....## +##.#.#...#.#........#.....#...# +........#....#...............#. +##.###......####...#####..#.... +...##...#..#....#........#...#. +...###.#..................##.#. +##.#.......###.......#...#.#... +....#..#.#...#...#....#.#.#..## +....#...........#..#........... +#..#.#..#...#...#..#........... +...#...#.#....#..#....#........ +#....#.......#.##........#..#.. +.....#...#..#................#. +#......#.......#..........##..# +.#....#.#......#.#...#....##..# +...#.##...#......#.#...##...##. +..#...#..##...#...#....#....... +.....#....#.#.#..........#.#... +...#...#..#....#..#.#.......... +......#.#..........##.......#.. +.#...##.#.#...#..##..#...#..... +..#..#.........#........#.#.#.. +#.#..##..#.....##......#.....#. +#..#.....#.#....#...#.#....#.#. +......#........##.#..#...#..... +...#.##.#.#......#.#..##...#..# +....#..###..#..#.....###....##. +.....#...#.#.....#..........#.# +.#...##..##.....#..#...#.#.#... +.##.#......##...##..#...#.....# +.#.##....#...#.##.#.#...#.#...# +....#.#...#....###.#.....#..... +#.....####................#..#. +....#.....#...#.#.......##.#... +.#...##.#...#..#...........#.#. +..#####..#.#...#...##........#. +...#...##........#...#.#....### +........#.#.#..#.....#.......#. +...#...#..##............##..... +#.#..###....###.#...#.#...##.## +..#.##...#......#..#.........## +.##..#..#.....#..#.........#.#. +.#..#.#....#.##...#..#.##....## +..#...#.#...##.#.#...#...#....# +#..........#.......##..##....#. +#...###.#......#....#.........# +#.....#...##.......##....##.... +.##.#..#.##......#.##....#..#.. +............#.#....##.#..#....# +.#.........##.##...#....#.....# +##....##..#..#....##...#.....## +...#.....#...........#.....##.. +......#...#.........#.......#.. +............#...##.#.....#.#.#. +.#........##..........#.....#.# +.###.........#.....#.##...#.... +.##..#...##...#..#..#.##....... diff --git a/day3/summary.txt b/day3/summary.txt new file mode 100644 index 0000000..65228ae --- /dev/null +++ b/day3/summary.txt @@ -0,0 +1,77 @@ +--- 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? + +Your puzzle answer was 234. + +--- 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? + +Your puzzle answer was 5813773056. + +Both parts of this puzzle are complete! They provide two gold stars: ** + +At this point, you should return to your Advent calendar and try another puzzle. + +If you still want to see it, you can get your puzzle input. + +You can also [Share] this puzzle. diff --git a/day3/test.txt b/day3/test.txt new file mode 100644 index 0000000..7e88cdc --- /dev/null +++ b/day3/test.txt @@ -0,0 +1,11 @@ +..##....... +#...#...#.. +.#....#..#. +..#.#...#.# +.#...##..#. +..#.##..... +.#.#.#....# +.#........# +#.##...#... +#...##....# +.#..#...#.# -- 2.30.2