Skip to content

Instantly share code, notes, and snippets.

@gavento
Created January 18, 2021 15:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gavento/a37dece0fcd17f29dbe0a43887d06f90 to your computer and use it in GitHub Desktop.
Save gavento/a37dece0fcd17f29dbe0a43887d06f90 to your computer and use it in GitHub Desktop.
N = 2022
primes = [i for i in range(2, N) if len([d for d in range(2, i) if i % d == 0]) == 0]
# Expected additonal rolls needed if I have d_k (k-sided dice) already determined
# 0-index is hit when we
EAR = [10.0] * N
EAR[0] = 0.0
for it in range(20):
def best_ear(k, ear):
if k == 0:
return 0.0
min_ear = 10.0
for p in primes:
r = p * k
over = r % N
p_over = over / r
min_ear = min(min_ear, (1.0 - p_over) * 1.0 + p_over * (1.0 + EAR[over]))
return min_ear
EAR = [best_ear(k, ear) for k, ear in enumerate(EAR)]
print(it, EAR[:5])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment