-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathday16.py
29 lines (23 loc) · 827 Bytes
/
day16.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Day 16: Dragon Checksum
def main():
input = '10011111011011001'
disk = [int(c) for c in input]
print("Part 1: {}".format("".join([str(bit) for bit in fill_disk(disk, 272)])))
print("Part 2: {}".format("".join([str(bit) for bit in fill_disk(disk, 35651584)])))
def fill_disk(disk, size):
while len(disk) < size:
inverse_disk = [int(not x) for x in disk]
disk.append(0)
disk.extend(reversed(inverse_disk))
checksum = disk[:size]
while len(checksum) % 2 == 0:
temp_checksum = []
for i in range (0, len(checksum), 2):
if (checksum[i] == checksum[i + 1]):
temp_checksum.append(1)
else:
temp_checksum.append(0)
checksum = temp_checksum
return checksum
if __name__ == "__main__":
main()