Skip to content

Commit

Permalink
AoC day 19
Browse files Browse the repository at this point in the history
  • Loading branch information
neilstudd committed Dec 19, 2024
1 parent 0e836d3 commit fa302f4
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 1 deletion.
42 changes: 42 additions & 0 deletions 2024/day19/day19.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import sys, os, re
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common'))
from common import open_file, print_and_verify_answer

def parse_file(data_file):
towels = data_file[0].strip().split(", ")
patterns = [line.strip() for line in data_file[2:]]
return towels, patterns

def count_ways_to_form_pattern(pattern, towels, result=None):
if result is None:
result = {}
if pattern in result:
return result[pattern]
if pattern == "":
return 1
count = 0
for towel in towels:
if pattern.startswith(towel):
count += count_ways_to_form_pattern(pattern[len(towel):], towels, result)
result[pattern] = count
return count

def run_part_one(mode, expected = None):
data_file = open_file( mode + ".txt")
towels, patterns = parse_file(data_file)
patterns_achievable = sum(1 for pattern in patterns if count_ways_to_form_pattern(pattern, towels))
print_and_verify_answer(mode, "one", patterns_achievable, expected)

def run_part_two(mode, expected = None):
data_file = open_file( mode + ".txt")
towels, patterns = parse_file(data_file)
ways_to_form_patterns = sum(count_ways_to_form_pattern(pattern, towels) for pattern in patterns)
print_and_verify_answer(mode, "two", ways_to_form_patterns, expected)

# ADD EXPECTED OUTPUTS TO TESTS HERE πŸ‘‡
run_part_one("test", 6)
run_part_one("test2", 0)
run_part_one("prod", 300)
run_part_two("test", 16)
run_part_two("prod", 624802218898092)
# Now run it and watch the magic happen πŸͺ„
10 changes: 10 additions & 0 deletions 2024/day19/test.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
r, wr, b, g, bwu, rb, gb, br

brwrr
bggr
gbbr
rrbgbr
ubwu
bwurrg
brgr
bbrgwb
3 changes: 3 additions & 0 deletions 2024/day19/test2.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
rgb, bwu

rgbwu
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Started in 2022, but I'll backfill previous years when I need a festive boost.
⬜ = incomplete or not attempted

### Stats
**2024:** 🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜⬜⬜ _(36)_
**2024:** 🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧🟧⬜⬜⬜⬜⬜⬜ _(38)_
**2023:** 🟨🟨🟨🟨🟧🟨🟨🟧⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ _(16)_
**2022:** πŸŸ¨πŸŸ¨πŸŸ¨πŸŸ¨πŸŸ¨πŸŸ¨πŸŸ¨πŸŸ¨πŸŸ¨πŸŸ¨πŸŸ¨πŸŸ§πŸŸ¨πŸŸ¨β¬›β¬œβ¬œβ¬›β¬œβ¬›πŸŸ¨β¬œπŸŸ¨β¬œβ¬› _(36)_
**2021:** 🟨🟨🟨🟨🟨🟨🟨🟨⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ _(16)_
Expand Down

0 comments on commit fa302f4

Please sign in to comment.