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.

at main 36 lines 892 B view raw
1import fileinput 2from collections import deque 3 4 5def adjacent_elves(num_elves): 6 elves = deque(range(1, num_elves + 1)) 7 8 while len(elves) > 1: 9 elves.rotate(-1) 10 elves.popleft() 11 12 return elves[0] 13 14 15def circular_elves(num_elves): 16 left = deque(range(1, (num_elves // 2) + 1)) 17 right = deque(range((num_elves // 2) + 1, num_elves + 1)) 18 19 while len(left) + len(right) > 1: 20 # Remove the middle Elf in the circle 21 right.popleft() 22 23 # Move an Elf from between deques 24 right.append(left.popleft()) 25 26 # Rebalance the deques if uneven 27 if len(right) - len(left) == 2: 28 left.append(right.popleft()) 29 30 return right[0] 31 32 33if __name__ == '__main__': 34 num_elves = int(fileinput.input()[0]) 35 print "Winning Elf in part 1:", adjacent_elves(num_elves) 36 print "Winning Elf in part 2:", circular_elves(num_elves)