This commit is contained in:
Stefan Harmuth 2024-12-28 12:39:15 +01:00
parent e0b0149449
commit 345e4830bc
2 changed files with 53 additions and 0 deletions

52
day09.py Normal file
View File

@ -0,0 +1,52 @@
from tools.aoc import AOCDay
from typing import Any
def get_decompressed_len(zipped: str, p2: bool = False) -> int:
length = 0
x = 0
while x < len(zipped):
if zipped[x] != "(":
length += 1
x += 1
continue
x += 1
marker = ""
while zipped[x] != ")":
marker += zipped[x]
x += 1
x += 1
c_count, repeats = map(int, marker.split("x"))
if not p2:
length += c_count * repeats
else:
repeator = zipped[x : x + c_count]
length += repeats * get_decompressed_len(repeator, p2=True)
x += c_count
return length
class Day(AOCDay):
inputs = [
[
(183269, "input9"),
],
[
(11317278863, "input9"),
],
]
def part1(self) -> Any:
return get_decompressed_len(self.getInput())
def part2(self) -> Any:
return get_decompressed_len(self.getInput(), True)
if __name__ == "__main__":
day = Day(2016, 9)
day.run(verbose=True)

1
inputs/input9 Normal file

File diff suppressed because one or more lines are too long