Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Unfair Dice by Tinus_Trotyl
def winning_die(diy):
def decline(die):
die = die[:]
if len(die) <= 1: return die
if all(n < die[0]+2 for n in die[1:]): return [die[0], *decline(die[1:])]
donator = die.index(min(n for n in die[1:] if n-1 > die[0]))
die[0], die[donator] = die[0] + 1, die[donator] - 1
return die
diy, dix = [n-1 for n in diy], [0 for n in diy]
hi = min(max(diy) + 1 if len(set(diy)) < len(diy) else max(diy), 17)
for top in range(hi, sum(diy) // len(diy), -1):
cumulo, n = sum(diy), top
for i in range(len(dix) - 1, -1, -1):
dix[i], cumulo = min(n, cumulo), max(cumulo - n, 0)
prev = [0 for _ in dix]
while prev != dix:
if sum(int(x > y) - int(y > x) for x in dix for y in diy) > 0:
return [n+1 for n in dix]
dix ,prev = sorted(decline(dix)), dix
return []
Dec. 1, 2019
Comments: