2021-12-01 - Sonar Sweep
(original .ipynb)
Day 1 puzzle input is a list of integers which represent a sequence of depth readings (mine is here). Part 1 involves counting how many individual readings were larger than the previous one. Part 2 is the exact same but for the sum of a "depth window" of the previous three readings.
import math
puzzle_input_str = open("puzzle_input/day1.txt").read()
test_input_str = """199
200
208
210
200
207
240
269
260
263"""
def parse_input(input_str):
return [int(depth_str) for depth_str in input_str.split("\n")]
def times_window_increased(depths, window_size):
prev_window = math.inf
index = 0
count = 0
while index + window_size <= len(depths):
window = sum(depths[index:index+window_size])
if window > prev_window:
count += 1
prev_window = window
index += 1
return count
def part_one(input_str):
depths = parse_input(input_str)
return times_window_increased(depths, 1)
assert 7 == part_one(test_input_str)
print("part one:", part_one(puzzle_input_str))
part one: 1559
def part_two(input_str):
depths = parse_input(input_str)
return times_window_increased(depths, 3)
assert 5 == part_two(test_input_str)
print("part two:", part_two(puzzle_input_str))
part two: 1600