frozen set

This commit is contained in:
2020-12-22 07:14:57 +01:00
parent 413a8b50f2
commit 52623631c7

View File

@@ -53,6 +53,7 @@ def p1():
globalgame = 0 globalgame = 0
mdepth = 0
def p2(): def p2():
inp = get_input(pw) inp = get_input(pw)
players = [] players = []
@@ -67,12 +68,15 @@ def p2():
print(players) print(players)
final = False final = False
wins = [0, 0] wins = [0, 0]
def play(players): def play(players, depth=0):
global globalgame global globalgame
global mdepth
mdepth = max(mdepth, depth)
globalgame += 1 globalgame += 1
history = set() history = set()
while all(filter(lambda x: len(x) > 0, players)): while all(filter(lambda x: len(x) > 0, players)):
hv = ','.join(map(str, players[0])) + ':' + ','.join(map(str, players[1])) hv = frozenset([frozenset(players[0]), frozenset(players[1])])
# ','.join(map(str, players[0])) + ':' + ','.join(map(str, players[1]))
if hv in history: if hv in history:
return 0 return 0
else: else:
@@ -80,7 +84,7 @@ def p2():
i = (players[0].pop(0), players[1].pop(0)) i = (players[0].pop(0), players[1].pop(0))
if i[0] <= len(players[0]) and i[1] <= len(players[1]): if i[0] <= len(players[0]) and i[1] <= len(players[1]):
players2 = [players[0][:i[0]], players[1][:i[1]]] players2 = [players[0][:i[0]], players[1][:i[1]]]
won = play(players2) won = play(players2, depth + 1)
if won == 1: if won == 1:
won = 0 won = 0
else: else:
@@ -99,7 +103,7 @@ def p2():
return 1 return 1
if(len(players[1]) == 0): if(len(players[1]) == 0):
return 0 return 0
won = play(players) won = play(players, 1)
if len(players[0]) == 0: if len(players[0]) == 0:
@@ -112,7 +116,7 @@ def p2():
#print(i,x) #print(i,x)
su += i*x su += i*x
print(su, f'(played games {globalgame})') print(su, f'(played games {globalgame}/{mdepth})')
return 0 return 0
result1 = None result1 = None