rename stuff
This commit is contained in:
1 parent
7c3d439f6e
commit
97ddc36b62
325 files changed
+85
No files matched your search
Executable
+58
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys
|
||||
|
||||
def step(deck1, deck2):
|
||||
new1, new2 = [x for x in deck1[1:]], [y for y in deck2[1:]]
|
||||
if deck1[0] > deck2[0]:
|
||||
new1.append(deck1[0])
|
||||
new1.append(deck2[0])
|
||||
else:
|
||||
new2.append(deck2[0])
|
||||
new2.append(deck1[0])
|
||||
return new1, new2
|
||||
|
||||
def game(deck1, deck2):
|
||||
while len(deck1) > 0 and len(deck2) > 0:
|
||||
deck1, deck2 = step(deck1, deck2)
|
||||
if len(deck1) > 0: return "1", deck1
|
||||
else: return "2", deck2
|
||||
|
||||
def recursive_game(deck1, deck2):
|
||||
comb = []
|
||||
while True:
|
||||
if len(deck1) == 0: return 'player2', deck2
|
||||
if len(deck2) == 0: return 'player1', deck1
|
||||
|
||||
new1, new2 = [x for x in deck1[1:]], [y for y in deck2[1:]]
|
||||
if (deck1, deck2) in comb: return 'player1', deck1
|
||||
comb.append((deck1, deck2))
|
||||
|
||||
if len(new1) >= deck1[0] and len(new2) >= deck2[0]:
|
||||
if recursive_game(deck1[1:(deck1[0]+1)], deck2[1:(deck2[0]+1)])[0] == 'player1':
|
||||
new1.append(deck1[0])
|
||||
new1.append(deck2[0])
|
||||
else:
|
||||
new2.append(deck2[0])
|
||||
new2.append(deck1[0])
|
||||
deck1, deck2 = [x for x in new1], [y for y in new2]
|
||||
else: deck1, deck2 = step(deck1, deck2)
|
||||
|
||||
def score(deck):
|
||||
count = 0
|
||||
for i, n in enumerate(deck):
|
||||
count += ((len(deck)-i) * n)
|
||||
return count
|
||||
|
||||
if __name__ == '__main__':
|
||||
decks = open(sys.argv[1]).read()
|
||||
deck1, deck2 = decks.split('\n\n')
|
||||
deck1, deck2 = deck1.split('\n')[1:], deck2.split('\n')[1:-1]
|
||||
deck1, deck2 = [int(i) for i in deck1], [int(j) for j in deck2]
|
||||
rdeck1, rdeck2 = [x for x in deck1], [y for y in deck2]
|
||||
|
||||
winner, windeck = game(deck1, deck2)
|
||||
print(winner, score(windeck))
|
||||
|
||||
winner, wdeck = recursive_game(rdeck1, rdeck2)
|
||||
print(winner, score(wdeck))
|
||||
Reference in new issue
Block a user