53 lines
1.0 KiB
Python
53 lines
1.0 KiB
Python
#!/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)
|