| @@ -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) | |||