44 lines
985 B
Python
44 lines
985 B
Python
|
|
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"
|