My Advent of Code solutions in Python. kevinyap.ca/2019/12/going-fast-in-advent-of-code/
advent-of-code python
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Optimize solution for Day 19

Use a deque instead of a node-based solution.

+6 -19
+6 -19
2016/day19.py
··· 1 1 import fileinput 2 - 3 - 4 - class LinkedElf: 5 - def __init__(self, num): 6 - self.num = num 7 - self.next = None 2 + from collections import deque 8 3 9 4 10 5 def adjacent_elves(num_elves): 11 - head = LinkedElf(1) 12 - curr = head 6 + elves = deque(range(1, num_elves + 1)) 13 7 14 - for i in range(2, num_elves + 1): 15 - curr.next = LinkedElf(i) 16 - curr = curr.next 17 - 18 - curr.next = head 19 - curr = head 8 + while len(elves) > 1: 9 + elves.rotate(-1) 10 + elves.popleft() 20 11 21 - while curr is not curr.next: 22 - curr.next = curr.next.next 23 - curr = curr.next 24 - 25 - return curr.num 12 + return elves[0] 26 13 27 14 28 15 def circular_elves(num_elves):