Day 3
authorBrett Parker <iDunno@sommitrealweird.co.uk>
Thu, 3 Dec 2020 09:42:03 +0000 (09:42 +0000)
committerBrett Parker <iDunno@sommitrealweird.co.uk>
Thu, 3 Dec 2020 09:42:03 +0000 (09:42 +0000)
day3/count_trees.py [new file with mode: 0644]
day3/count_trees_2.py [new file with mode: 0644]
day3/input.txt [new file with mode: 0644]
day3/summary.txt [new file with mode: 0644]
day3/test.txt [new file with mode: 0644]

diff --git a/day3/count_trees.py b/day3/count_trees.py
new file mode 100644 (file)
index 0000000..ea16e71
--- /dev/null
@@ -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 (file)
index 0000000..84a3883
--- /dev/null
@@ -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 (file)
index 0000000..8ffc29d
--- /dev/null
@@ -0,0 +1,323 @@
+.......#..#....#...#...#......#
+..##..#...##.###.#..#.....#.#..
+#..#.#....#......#..#.........#
+.#..##...#........#....#..#..#.
+#.#.#....###...#........#.....#
+.#...#.#.##.#.##...#.#.........
+####......#.......###.##.#.....
+..#...........#...#.#.#........
+.#.......#....###.####..#......
+...##........#....##.......##..
+.###......##.#......##....#.#.#
+........#.#......##...#......#.
+#....##.#..#...#.......#.......
+.#..##........##.........#....#
+.#..#..#...#....#.#......#.#...
+..#.#......##.#.......#....##..
+......##......#.#..##.#..#...#.
+.....##.......#.#....#.#.......
+........#.....#.....#..###.#...
+#........#..#.....#...#.#.#..#.
+.#..#.....#...#........#.....#.
+.#.#.....#.....#...#...........
+.....#.#..#..#...#..#..#..##..#
+##.#...#....#..#.##..#.....#.#.
+#.......####......#..#.#....#..
+......#.#...####.........#.#..#
+.#.........#..#.#...#..........
+...#####.#....#.#..#......#.#.#
+##....#.###....##...##..#.....#
+...........####.##.#....##.##..
+#.#.#..........#.#..##.#.######
+##...#..#...........###..#....#
+.#.#.#...##..........##.#...#..
+...#.#........#..##...#....#...
+......#..#...#..##....#.......#
+.#..#.......#..#......##....##.
+.......#.......#........#..##..
+...#...#...#.##......#.##.#....
+.........#.........#.#.#.##....
+..#...................#....#..#
+.........#..#.....#.#...#....#.
+#.#.#...#........#..###.#......
+#.#.#.####......##...#...#....#
+#...........##..#.#.#....#..#..
+........#..#.#...........##.#.#
+.#.........#...........#..#....
+#............##.#..#....##...##
+.#....##..#.#....#.......#..#..
+..#.#...#.#......####.......#..
+...#.#.......###......#.....#..
+#......#.......#.#...#.#..##...
+...#.....#...##.#.....#.#......
+#.#.#............#..#......#..#
+....#...#...##.##.##...##.#....
+..##........#..#........#...##.
+.......#..#...#.........#.....#
+...........#.#......#...#......
+...##..##..##..###..#..#..#..#.
+#..##.......##..#....#....#.#..
+#.#.##.#..##.....#....#.#......
+....#..##......#.#..#....#....#
+.#.#.........##...#......##.##.
+##...........#..#.....#.###....
+.#.###........#...#....##..#...
+......##.....#.................
+.#.##..#.#.......#......#.#.#..
+.#...#....#.##..........##.##..
+#...##......####.#....#....#...
+.#...#.##.#.#.....#...#........
+.#................#.##.#.###...
+...#.#..#.#.....##.....##....#.
+..##.#..#..##.....#....#...#.##
+........###.##..#..###.....#..#
+..##.....#.......#.#...##......
+#.#..###...##.###.##.#..#...#..
+#..#..#.#...#....#...##.....#.#
+#..................#........#..
+#.....#.......#.##....##....#..
+...#.............#.....#...#...
+...#...#.##..##.....#........#.
+.......#........##....###..##..
+.#....#....#.#..#......#....#.#
+..........#..#.#.....##...#.##.
+.#...##.#...........#.#.......#
+..#.##.....#.###.#.............
+..#....###..........#.#.#......
+#.....#.####..#.#......#..#.#.#
+...#........#..#...............
+.###.#.##.....#.#...........#..
+..#....#..#....#..##....#......
+......#..#.....#.#.##.......#.#
+###..#...#.#..#....#..##.###..#
+.#....##.###........##...##.#.#
+........##..##.#....##..#....#.
+...#..#....#.#....#...#...##...
+#.....#......#.##........#....#
+....#....###.##...#.#.##....#..
+......#.##..#.#..........#...#.
+...........#...#....##...#....#
+......#.#.........#....#.#.#...
+.###..........#.###.##....#...#
+...##.......#......#....#....#.
+#..#...#.#..####...#......#..#.
+....##..#.#.........#..........
+.##.###.##....##.####....#...#.
+..##.......#........#...#..#...
+....#####..........###....#....
+.#.#..#.#.#....#..#............
+........#.....#....#.......##..
+...........##....##..##.....##.
+..###........#.#.#..#....##...#
+.....#...........##......#..#..
+...##........#.##.#......##..#.
+##..#....#............##..#..#.
+.#.....#...##.##..............#
+#..##........#...#...#......##.
+......##.....#.......####.##..#
+...#.#....#...#..#.............
+..#...#..##.###..#..#.......##.
+##....###.......#...#..#.......
+#..#.....###.....#.#.........#.
+#.#....#.............#...#.....
+..#.#.##..........#.....##.#...
+.....##......#..#..#.....#..#..
+##.#..#..#.##......###....#..#.
+...#............##...#..##.....
+.#..#....#.........#......#.##.
+.##.##...#..............#..#.##
+...#....#...###...#...#....#..#
+..#...#..####..#....#.#...##..#
+..............##.##.......##...
+..##.#..##...........#.#.#...#.
+..................##.####.###..
+.#...........#.......#......#..
+.#.#.#...#....#.........##...##
+....#..........#.#....#.#.....#
+..........#.#..........#.#.....
+...........#.....#.#......#....
+........#..#.#.#.#.............
+...###...##...##..####.##......
+.#..#......###.....#...#.....#.
+.........##............#.#.....
+#.#..#.#.#....###.#.#..#..#..##
+..........#...#.##.#..#..#....#
+#..#.......##....#..##........#
+##.#...#....##.............#...
+....#........#......##..#..#.##
+.................#.#.#.#.#.....
+...........#.#.....#.......#...
+#.......#.......#............#.
+....#...........#.#.##.....#..#
+#...#.....#....#..##...#.......
+..#.....#.....#.##.##....#.....
+.#.#..#...#..#..##.....##..#...
+.#.#....#.........####.........
+#...#..####.....#...#..##......
+..#...##.#.....#...#.....##....
+.#...#.....#.#.#......#.......#
+..#.....##.#..#.#...##.........
+##.#...#..#....#....#.##.##...#
+.#..#....#..##.#.......#..#....
+...##.#......#...###.......#...
+...#..#.........##.####........
+#.#..#..##...........#..#......
+.#...#.#......#.#..........#...
+...###...#.......#.....#.#...##
+..#....#.#.##..........##...#..
+.....###.........#.....#..##..#
+.......##.....#.#.....#.#..##..
+.#.#.###..##.......##...#......
+......#.....#................##
+.#......##..##.#.#...#...#...##
+.#...#......#.......#.#........
+.#..........###...#..#...#.....
+.........##.....#.#..#..#.#...#
+#...#...#.........#..#..#....#.
+###.......#.#.....#....##......
+.#..#......#..#...........#..#.
+..##....##..##...#......#......
+.#........#....#...#....#.....#
+.#.......#...#...#..##.#.#..#..
+#...#........#.##.....#.....#..
+#..##.....#..........#...#...##
+............#...............#..
+.#.##...#.....#.#..#..#..#.....
+.#.#.#...#........#....#...##..
+##......#.....#.###.#...#.#..#.
+.........##..#..#.#...#...#...#
+#...#.#....#..#..#.....#.......
+.......#.###...#.............#.
+..#.....#.#.#..###.#....#.....#
+....#...#.#....#.#..........#..
+..#......#.###.#.#..#.....#...#
+#............#..##...##......#.
+#...........#..#....#.###..###.
+.#.##.#.#.......#.............#
+..............#................
+..#.#.....#.....#...#......#...
+.#.#.#..#..#.#...........##....
+.....##.#......#..#.##....#....
+.......##..#.#.#..#............
+..#.....#.....#.###..#.....#.#.
+......##.....#..##.#...#.....#.
+...#...#....#..#..#........#...
+..#.##..#....#.........#.#..#..
+#....#.....###.....#......#....
+##.....#..#..##.........#.##.##
+.#.#....#.#..........#.........
+.##.#...#..#.......#.##...#....
+...#...#.....#....#...#.#..#...
+.....#....#.....#.....#.#......
+...........#.#.......#.......#.
+.........##.###.##........#....
+#..##.....#...#.#..............
+.#...#....##........#.#..#....#
+..#...#........#...#..#.##.#..#
+........#...#.....##.#.#....#.#
+#..#.......###.#....#.#.#......
+.......#...##....#...#..##..#..
+.....##........#.#.#..#....##..
+.#....#..#.#...........#......#
+...##....#.##.....##.......#...
+.##..#..#....#.#....#..#....##.
+..#....#.....###.......#..##..#
+....#.......#....##..#....#..##
+....#......##..#....#.#...#.#..
+.##.#......##..................
+##.#....#........#..#..#...##.#
+.......#..#.#...##.....#.#.....
+..##.#...........#.#.#..#.#.#..
+.....#....#......#..#.......#..
+#.#...#.####..##.......#..##...
+...#....#.....#.##.#..#.##..#..
+.#.......#......##........##.#.
+.......#.#...#..#...#..##.#....
+.#....#........#.#.....##..#..#
+#..#.....#..#.............#...#
+#...#....#..#...###..#...#.#...
+.#..#.....#..........#..##.####
+#.#.#.#.##.#.#.....##.#........
+...#....##....#...#..##.......#
+..##.##.#.#........#..........#
+..###........###..#..........#.
+...#......#..##.#........#..#..
+#.#.#..#........#..#..........#
+...#........#..##.#...#.###....
+##......#.####.#....#......#...
+.#..#......#................#..
+#.#........#.#.....##.....##...
+#...............#..#.......#.#.
+.##..#...........##..#..#.#....
+#......#.#.......#.#.#.##..#.##
+.....##.#..###.............##..
+....##.........#..#...#........
+.....#.....#.#.#..#.#..........
+#.........#....##.#.##.....#..#
+.#.........#......#.#.##.#.#...
+##.........#.....#..#.#..#.##.#
+....#......##...#.....#..#..###
+..#..............#...#..####...
+#....#...##.#.......#...#..#...
+#.......###.#.#.......#.......#
+...##....#.#...........#...###.
+...........#..#.#.....#..##..#.
+..#.........#..###..#.....#...#
+..#.#.....#.#.#...#.#.#......#.
+........#.....#.#......##....##
+##.#.#...#.#........#.....#...#
+........#....#...............#.
+##.###......####...#####..#....
+...##...#..#....#........#...#.
+...###.#..................##.#.
+##.#.......###.......#...#.#...
+....#..#.#...#...#....#.#.#..##
+....#...........#..#...........
+#..#.#..#...#...#..#...........
+...#...#.#....#..#....#........
+#....#.......#.##........#..#..
+.....#...#..#................#.
+#......#.......#..........##..#
+.#....#.#......#.#...#....##..#
+...#.##...#......#.#...##...##.
+..#...#..##...#...#....#.......
+.....#....#.#.#..........#.#...
+...#...#..#....#..#.#..........
+......#.#..........##.......#..
+.#...##.#.#...#..##..#...#.....
+..#..#.........#........#.#.#..
+#.#..##..#.....##......#.....#.
+#..#.....#.#....#...#.#....#.#.
+......#........##.#..#...#.....
+...#.##.#.#......#.#..##...#..#
+....#..###..#..#.....###....##.
+.....#...#.#.....#..........#.#
+.#...##..##.....#..#...#.#.#...
+.##.#......##...##..#...#.....#
+.#.##....#...#.##.#.#...#.#...#
+....#.#...#....###.#.....#.....
+#.....####................#..#.
+....#.....#...#.#.......##.#...
+.#...##.#...#..#...........#.#.
+..#####..#.#...#...##........#.
+...#...##........#...#.#....###
+........#.#.#..#.....#.......#.
+...#...#..##............##.....
+#.#..###....###.#...#.#...##.##
+..#.##...#......#..#.........##
+.##..#..#.....#..#.........#.#.
+.#..#.#....#.##...#..#.##....##
+..#...#.#...##.#.#...#...#....#
+#..........#.......##..##....#.
+#...###.#......#....#.........#
+#.....#...##.......##....##....
+.##.#..#.##......#.##....#..#..
+............#.#....##.#..#....#
+.#.........##.##...#....#.....#
+##....##..#..#....##...#.....##
+...#.....#...........#.....##..
+......#...#.........#.......#..
+............#...##.#.....#.#.#.
+.#........##..........#.....#.#
+.###.........#.....#.##...#....
+.##..#...##...#..#..#.##.......
diff --git a/day3/summary.txt b/day3/summary.txt
new file mode 100644 (file)
index 0000000..65228ae
--- /dev/null
@@ -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 (file)
index 0000000..7e88cdc
--- /dev/null
@@ -0,0 +1,11 @@
+..##.......
+#...#...#..
+.#....#..#.
+..#.#...#.#
+.#...##..#.
+..#.##.....
+.#.#.#....#
+.#........#
+#.##...#...
+#...##....#
+.#..#...#.#