@@ -0,0 +1,24 @@ | |||
import collections | |||
import itertools | |||
import sys | |||
text = sys.stdin.read() | |||
inp = [int(n) for n in text.split(',')][::-1] | |||
seen = collections.defaultdict(lambda: collections.deque(maxlen=2)) | |||
spoken = None | |||
for turn in itertools.count(1): | |||
if inp: | |||
spoken = inp.pop() | |||
elif len(seen[spoken]) < 2: | |||
spoken = 0 | |||
else: | |||
spoken = seen[spoken][-1] - seen[spoken][-2] | |||
if turn == 2020: | |||
print(spoken) | |||
elif turn == 30_000_000: | |||
print(spoken) | |||
break | |||
seen[spoken].append(turn) |