Compare commits

...

2 Commits

Author SHA1 Message Date
f0a6214052 Solve 2016 day 17. 2024-05-05 19:42:50 -04:00
824e235cec Solve 2016 day 16. 2024-05-05 15:51:43 -04:00
3 changed files with 86 additions and 1 deletions

42
2016/d16.py Normal file
View File

@@ -0,0 +1,42 @@
def step(a: str) -> str:
b = "".join(["1" if c == "0" else "0" for c in reversed(a)])
return a + "0" + b
def fill(a: str, n: int) -> str:
while len(a) < n:
a = step(a)
return a[:n]
def checksum(a: str) -> str:
while len(a) % 2 == 0:
xs = []
for i in range(0, len(a), 2):
if a[i] == a[i + 1]:
xs.append("1")
else:
xs.append("0")
a = "".join(xs)
return a
def solve():
assert step("1") == "100"
assert step("0") == "001"
assert step("11111") == "11111000000"
with open("i16.txt") as f:
d = f.read().strip()
a = fill(d, 272)
b = checksum(a)
print(b)
a = fill(d, 35651584)
b = checksum(a)
print(b)
if __name__ == "__main__":
solve()

40
2016/d17.py Normal file
View File

@@ -0,0 +1,40 @@
import hashlib
from collections import deque
from lib import add2
def solve():
part_1 = False
DIRS = [("U", (-1, 0)), ("D", (1, 0)), ("L", (0, -1)), ("R", (0, 1))]
with open("i17.txt") as f:
passcode = f.read().strip()
maxlen = 0
poss = deque([((0, 0), f"{passcode}")])
while poss:
if part_1:
pos, path = poss.popleft()
else:
pos, path = poss.pop()
if pos == (3, 3):
if part_1:
print(path[len(passcode):])
return
else:
l = len(path) - len(passcode)
if l > maxlen:
maxlen = l
else:
status = hashlib.md5(f"{path}".encode()).hexdigest()
for (c, d), s in zip(DIRS, status[:4]):
if s in "bcdef":
npos = add2(pos, d)
npath = path + c
if npos[0] >= 0 and npos[0] < 4 and npos[1] >= 0 and npos[1] < 4:
poss.append((npos, npath))
print(maxlen)
if __name__ == "__main__":
solve()

View File

@@ -47,7 +47,10 @@ written in Python.
- Day 12: 10:05 okay - Day 12: 10:05 okay
- Day 13: 9:43 okayish - Day 13: 9:43 okayish
- Day 14: 120:00 struggled with this one (example incorrect?) - Day 14: 120:00 struggled with this one (example incorrect?)
- Day 15: - Day 15: Trial and error. Should use CRT instead.
- Day 16: 14:11
- Day 17: 45:00 didn't follow instructions... focus!
- Day 18:
# 2017 # 2017