Solve 2016:16 p1-2 "Dragon Checksum"

This commit is contained in:
Anders Englöf Ytterström 2024-11-29 15:17:26 +01:00
parent 623253ac9d
commit cdd5f63be4
2 changed files with 43 additions and 11 deletions

View file

@ -142,16 +142,6 @@ def M(s, e):
if __name__ == "__main__":
# use dummy data
inp = """
The first floor contains a hydrogen-compatible microchip and a lithium-compatible microchip.
The second floor contains a hydrogen generator.
The third floor contains a lithium generator.
The fourth floor contains nothing relevant.
""".strip()
z, _ = solve(inp)
with open("./input/11.txt", "r") as f:
inp = f.read().strip()
@ -160,6 +150,5 @@ if __name__ == "__main__":
a = part_1(inp)
b = part_2(inp)
assert z == 11
assert a == 37
assert b == 61

View file

@ -0,0 +1,43 @@
from output import answer # , matrix, D, DD, ADJ, ints, mhd, mdbg, vdbg
n = 16
title = "Dragon Checksum"
@answer(1, "The checksum to the state to fill first disc is {}")
def part_1(presolved):
return presolved[0]
@answer(2, "The checksum to the state to fill second disc is {}")
def part_2(presolved):
return presolved[1]
def solve(data):
p12 = []
for DS in [272, 35651584]:
s = [int(c) for c in data]
while len(s) < DS:
b = [abs(int(c) - 1) for c in s[::-1]]
s = s + [0] + b
s = s[:DS]
p = len(s)
while p % 2 == 0:
s = [int(a == b) for a, b in zip(s[::2], s[1::2])]
p = len(s)
p12.append("".join(map(str, s)))
return p12
if __name__ == "__main__":
with open("./input/16.txt", "r") as f:
inp = f.read().strip()
inp = solve(inp)
a = part_1(inp)
b = part_2(inp)
assert a == "10011010010010010"
assert b == "10101011110100011"