Solve 2016 day 9.

This commit is contained in:
2024-03-29 10:27:21 -04:00
parent 440ae63b31
commit e528e84d36
2 changed files with 48 additions and 1 deletions

46
2016/d9.py Normal file
View File

@@ -0,0 +1,46 @@
from lib import *
data = open(0).read().strip()
def count_non_rec(data):
text = ""
i = 0
while i < len(data):
if data[i] == "(":
for j in range(i + 1, len(data)):
if data[j] == ")":
break
else:
assert False
length, repeats = str_to_ints(data[i:j])
to_repeat = data[j + 1: j + 1 + length]
text += (to_repeat * repeats)
i = (j + length + 1)
else:
text += data[i]
i += 1
return len(text)
def count(data):
if not "(" in data:
return len(data)
r = 0
i = 0
while i < len(data) and data[i] != "(":
i += 1
r += 1
if data[i] == "(":
for j in range(i + 1, len(data)):
if data[j] == ")":
break
else:
raise Exception("No matching ) found!")
length, repeats = str_to_ints(data[i:j])
r += (count(data[j + 1:j + 1 + length]) * repeats)
r += count(data[j + 1 + length:])
return r
print(count_non_rec(data))
print(count(data))

View File

@@ -41,4 +41,5 @@ written in Python.
- Day 6: 4:20 okay
- Day 7: 31:20 hmm
- Day 8: 14:50 meh
- Day 9:
- Day 9: 26:00 okay
- Day 10: