Solve 2024:3 p1-2 "Mull It Over"
Felt paranoid on this one, was expecting something
much worse for pt2.
The code that solved the puzzle was _extremely_
naive:
- It asumes puzzle input only contains mul() with
1-3 chars. The versioned code have `{1,3}` as safe
guard.
- p2 asumed initial chunk does not begin with
"n't". Would have been easy to handle though.
- p2 asumed junk strings as "don", "do", "don()t"
would not exist.
In other words, I was really lucky since I did not
look that closely on puzzle input beforehand.
Might have cut 60-90 seconds further if I had just
ran pt2 immidately instead of staring dumbly on the
test data (that changed for pt2).
Also, I got reminded that \d in regular expressions
is equal to `0-9`: it does not include commas and
punctations. The code that solved the puzzle was
paranoid and instead used `0-9`.
Managed to score ~1500th somehow despite this.
This commit is contained in:
parent
5deb351504
commit
cb622409f9
3 changed files with 28 additions and 1 deletions
|
|
@ -34,7 +34,7 @@ from collections import deque, Counter
|
||||||
from heapq import heappop, heappush
|
from heapq import heappop, heappush
|
||||||
from itertools import compress, combinations, chain
|
from itertools import compress, combinations, chain
|
||||||
|
|
||||||
from output import answer # , matrix, D, DD, ADJ, ints, mhd, mdbg, vdbg
|
from output import matrix, D, DD, ADJ, ints, mhd, mdbg, vdbg
|
||||||
|
|
||||||
|
|
||||||
def solve(data):
|
def solve(data):
|
||||||
|
|
|
||||||
|
|
@ -127,6 +127,7 @@ def dijkstras(grid, start, target):
|
||||||
all nodes.
|
all nodes.
|
||||||
"""
|
"""
|
||||||
import heapq
|
import heapq
|
||||||
|
|
||||||
target = max(grid)
|
target = max(grid)
|
||||||
seen = set()
|
seen = set()
|
||||||
queue = [(start, 0)]
|
queue = [(start, 0)]
|
||||||
|
|
|
||||||
26
2024-python/output/day_03.py
Normal file
26
2024-python/output/day_03.py
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
import re
|
||||||
|
from math import prod
|
||||||
|
|
||||||
|
|
||||||
|
def solve(data):
|
||||||
|
needle = re.compile(r"mul\((\d{1,3}),(\d{1,3})\)")
|
||||||
|
|
||||||
|
p1 = sum(prod(map(int, factors)) for factors in re.findall(needle, data))
|
||||||
|
|
||||||
|
p2 = sum(
|
||||||
|
sum(prod(map(int, factors)) for factors in re.findall(needle, chunk))
|
||||||
|
for chunk in data.split("do")
|
||||||
|
if not chunk.startswith("n't")
|
||||||
|
)
|
||||||
|
|
||||||
|
return p1, p2
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
with open("./input/03.txt", "r") as f:
|
||||||
|
inp = f.read().strip()
|
||||||
|
|
||||||
|
p1, p2 = solve(inp)
|
||||||
|
|
||||||
|
print(p1)
|
||||||
|
print(p2)
|
||||||
Loading…
Add table
Reference in a new issue