From ff5ddb945ac9e37751dca957e16f0d2f6b1dacf1 Mon Sep 17 00:00:00 2001 From: Luke Hubmayer-Werner Date: Sun, 9 Dec 2018 20:12:34 +1030 Subject: [PATCH] Deque version of 2018 Day 9. --- 2018/day9-deque.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 2018/day9-deque.py diff --git a/2018/day9-deque.py b/2018/day9-deque.py new file mode 100644 index 0000000..3795239 --- /dev/null +++ b/2018/day9-deque.py @@ -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