Faster day 9
This commit is contained in:
parent
fd2e8872c6
commit
9ee26756f4
|
@ -0,0 +1,48 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
|
||||||
|
class Node(object):
|
||||||
|
def __init__(self, val):
|
||||||
|
self.val = val
|
||||||
|
self.prev = None
|
||||||
|
self.next = None
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
numplayers = 426
|
||||||
|
lastmarb = 72058
|
||||||
|
players = [0 for i in range(numplayers)]
|
||||||
|
|
||||||
|
currentplr = 0
|
||||||
|
curmarb = Node(0)
|
||||||
|
curmarb.next = curmarb
|
||||||
|
curmarb.prev = curmarb
|
||||||
|
nextmarb = 1
|
||||||
|
while True:
|
||||||
|
if nextmarb % 23 == 0:
|
||||||
|
remove = curmarb.prev.prev.prev.prev.prev.prev.prev
|
||||||
|
players[currentplr] += nextmarb + remove.val
|
||||||
|
between_a = remove.prev
|
||||||
|
between_b = remove.next
|
||||||
|
between_a.next = between_b
|
||||||
|
between_b.prev = between_a
|
||||||
|
curmarb = between_b
|
||||||
|
else:
|
||||||
|
place_between_a = curmarb.next
|
||||||
|
place_between_b = place_between_a.next
|
||||||
|
curmarb = Node(nextmarb)
|
||||||
|
curmarb.next = place_between_b
|
||||||
|
place_between_b.prev = curmarb
|
||||||
|
curmarb.prev = place_between_a
|
||||||
|
place_between_a.next = curmarb
|
||||||
|
|
||||||
|
if nextmarb == lastmarb:
|
||||||
|
break
|
||||||
|
nextmarb += 1
|
||||||
|
currentplr = (currentplr + 1) % numplayers
|
||||||
|
|
||||||
|
print("Winning score:", max(players))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
|
@ -0,0 +1,48 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
|
||||||
|
class Node(object):
|
||||||
|
def __init__(self, val):
|
||||||
|
self.val = val
|
||||||
|
self.prev = None
|
||||||
|
self.next = None
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
numplayers = 426
|
||||||
|
lastmarb = 72058 * 100
|
||||||
|
players = [0 for i in range(numplayers)]
|
||||||
|
|
||||||
|
currentplr = 0
|
||||||
|
curmarb = Node(0)
|
||||||
|
curmarb.next = curmarb
|
||||||
|
curmarb.prev = curmarb
|
||||||
|
nextmarb = 1
|
||||||
|
while True:
|
||||||
|
if nextmarb % 23 == 0:
|
||||||
|
remove = curmarb.prev.prev.prev.prev.prev.prev.prev
|
||||||
|
players[currentplr] += nextmarb + remove.val
|
||||||
|
between_a = remove.prev
|
||||||
|
between_b = remove.next
|
||||||
|
between_a.next = between_b
|
||||||
|
between_b.prev = between_a
|
||||||
|
curmarb = between_b
|
||||||
|
else:
|
||||||
|
place_between_a = curmarb.next
|
||||||
|
place_between_b = place_between_a.next
|
||||||
|
curmarb = Node(nextmarb)
|
||||||
|
curmarb.next = place_between_b
|
||||||
|
place_between_b.prev = curmarb
|
||||||
|
curmarb.prev = place_between_a
|
||||||
|
place_between_a.next = curmarb
|
||||||
|
|
||||||
|
if nextmarb == lastmarb:
|
||||||
|
break
|
||||||
|
nextmarb += 1
|
||||||
|
currentplr = (currentplr + 1) % numplayers
|
||||||
|
|
||||||
|
print("Winning score:", max(players))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Loading…
Reference in New Issue