commit d05ab6a516b87d46acbb0fcfb9126895620bdc44
parent 343ef4b9d593242cc406725a64e203f5b9a08fe6
Author: Eamon Caddigan <eamon.caddigan@gmail.com>
Date:   Wed,  1 Dec 2021 04:51:10 -0500
My solution to day 1, part 1
Diffstat:
2 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/day01_part1.py b/day01_part1.py
@@ -0,0 +1,41 @@
+#!/usr/bin/env python
+"""For Day 1, part 1 of the 2021 Advent of Code, we're simply inspecting a
+stream of numbers and counting the number of times that an item in the stream
+is greater than the preceding element."""
+
+# As I work through these problems, I will often decide whether I want to use a
+# pure Python approach, or whether I want to use numpy/scipy. I feel like I
+# have more familiarity with the language in general than these libraries, so
+# I'm going to lean on them more heavily than might be necessary. For instance,
+# I could make a `lag` iterator and `zip` the original stream with its lagged
+# version, but I'm not doing that here.
+
+from io import StringIO
+import pandas as pd
+from utils import get_puzzle_input
+
+def download_input_data():
+    """Downloads the data for the day and returns a pandas data frame with a
+    single column named `depth`"""
+    return pd.read_csv(StringIO(get_puzzle_input(1)),
+                       names=('depth',))
+
+def calculate_depth_diffs(depth_series):
+    """Given a pandas series of depths, returns the difference between each
+    element and the preceding one"""
+    return depth_series - depth_series.shift(1)
+
+def count_depth_increases(depth_diff_series):
+    """Given a pandas series of depth differences, count the number of
+    increases"""
+    return (depth_diff_series > 0).sum()
+
+if __name__ == "__main__":
+    """Download the data, find the answer, and print it to the terminal"""
+    depth_data = download_input_data()
+
+    depth_data['depth_diff'] = calculate_depth_diffs(depth_data['depth'])
+
+    number_of_increases = count_depth_increases(depth_data['depth_diff'])
+
+    print(f'{number_of_increases = }')
diff --git a/utils.py b/utils.py
@@ -13,10 +13,9 @@ def get_puzzle_input(day_number):
         session = f_in.readline().strip()
 
     response = requests.get(f'https://adventofcode.com/2021/day/{day_number}/input',
-        cookies = {'session': session},
-        headers = {'User-Aent': 'advent_of_code_2021/0.1'})
+                            cookies={'session': session},
+                            headers={'User-Aent': 'advent_of_code_2021/0.1'})
 
     response.raise_for_status()
 
     return response.text
-