This commit is contained in:
Sebastian Seedorf
2020-12-30 10:35:08 +01:00
parent 9e79644296
commit 1e78940455
3 changed files with 72 additions and 0 deletions

1
day23/input.txt Normal file
View File

@@ -0,0 +1 @@
952316487

19
day23/part1.py Normal file
View File

@@ -0,0 +1,19 @@
#!/usr/bin/env python3
from functools import reduce
from tqdm import tqdm
num = [list(map(int, (char for char in x.strip()))) for x in open("input.txt")][0]
for _ in tqdm(range(100)):
destination = num[0]
while True:
destination -= 1
if destination == 0:
destination = 9
if not destination in num[1:4]:
break
pos = num.index(destination)
num = num[4:pos+1] + num[1:4] + num[pos+1:] + num[0:1]
pos = num.index(1)
print(reduce(lambda a, b: 10*a+b, num[pos+1:] + num[:pos], 0))

52
day23/part2.py Normal file
View File

@@ -0,0 +1,52 @@
#!/usr/bin/env python3
from tqdm import tqdm
class Node:
value = None
next = None
def __init__(self, value, next):
self.value = value
self.next = next
num = [list(map(int, (char for char in x.strip()))) for x in open("input.txt")][0]
num = num + list(range(len(num)+1, 1000000+1))
MAX = len(num)
nodes = dict()
nodes[num[-1]] = curr = last = Node(num[-1], None)
for n in num[-2::-1]:
nodes[n] = curr = Node(n, curr)
last.next = curr
for _ in tqdm(range(10000000)):
pickups = []
lp = curr
for j in range(3):
lp = lp.next
pickups.append(lp.value)
ap = lp.next
destination = curr.value
while True:
destination -= 1
if destination == 0:
destination = MAX
if destination not in pickups:
break
dst = nodes[destination]
lp.next = dst.next
dst.next = curr.next
curr.next = ap
curr = curr.next
while curr.value != 1:
curr = curr.next
curr = curr.next
res = curr.value
curr = curr.next
res *= curr.value
print(res)