Deque version of 2018 Day 9.

This commit is contained in:
Luke Hubmayer-Werner 2018-12-09 20:12:34 +10:30
parent 13497129f0
commit ff5ddb945a
1 changed files with 25 additions and 0 deletions

25
2018/day9-deque.py Normal file
View File

@ -0,0 +1,25 @@
import numpy as np
from itertools import cycle
from collections import deque
with open('day9-input', 'r') as file:
data = [l.strip('\n') for l in file][0].split()
players = int(data[0])
last_marble = int(data[-2])
def find_winning_score(players, last_marble):
marbles = deque([0])
scores = np.zeros(players, dtype=np.int64)
for marble, player in zip(range(1, last_marble+1), cycle(range(players))):
if marble % 23 == 0:
marbles.rotate(-7)
scores[player] += marble + marbles.pop()
else:
marbles.rotate(2)
marbles.append(marble)
return max(scores)
print(find_winning_score(players, last_marble)) # Part 1
print(find_winning_score(players, last_marble*100)) # Part 2