Create day22.py
This commit is contained in:
parent
3b5deaebaa
commit
a6aac6a548
41
2020/Python/day22.py
Normal file
41
2020/Python/day22.py
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
from typing import Tuple
|
||||||
|
|
||||||
|
|
||||||
|
def parse_data() -> Tuple[list[int], list[int]]:
|
||||||
|
data = ([], [])
|
||||||
|
mode = -1
|
||||||
|
with open("input.txt") as file:
|
||||||
|
for line in file:
|
||||||
|
line = line.rstrip()
|
||||||
|
|
||||||
|
if line == "Player 1:":
|
||||||
|
mode = 0
|
||||||
|
elif line == "Player 2:":
|
||||||
|
mode = 1
|
||||||
|
elif mode == -1 or not line:
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
data[mode].append(int(line))
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def solve_p1(player1: list[int], player2: list[int]) -> int:
|
||||||
|
stack1 = list(reversed(player1))
|
||||||
|
stack2 = list(reversed(player2))
|
||||||
|
|
||||||
|
while len(stack1) > 0 and len(stack2) > 0:
|
||||||
|
number1 = stack1.pop()
|
||||||
|
number2 = stack2.pop()
|
||||||
|
if number1 > number2:
|
||||||
|
stack1.insert(0, number1)
|
||||||
|
stack1.insert(0, number2)
|
||||||
|
else:
|
||||||
|
stack2.insert(0, number2)
|
||||||
|
stack2.insert(0, number1)
|
||||||
|
|
||||||
|
winning = stack1 if len(stack1) > 0 else stack2
|
||||||
|
return sum(x*y for (x, y) in (zip(winning, [x for x in range(1, len(winning)+1)])))
|
||||||
|
|
||||||
|
|
||||||
|
PLAYER1, PLAYER2 = parse_data()
|
||||||
|
print(solve_p1(PLAYER1, PLAYER2))
|
Loading…
Reference in a new issue