python/cheating royal riddle.py
DomNomNomVR 028fb0bc3a dump
2025-04-14 15:58:38 +12:00

38 lines
892 B
Python

# https://www.youtube.com/watch?v=hk9c7sJ08Bg
from collections import defaultdict
distribution = {0:1}
def print_sorted_by_key(counter):
print('{')
for key in sorted(counter.keys()):
print(f' {key}: {counter[key]},')
print('}')
def convolve(distribution, equally_weighted_dice):
d2 = defaultdict(float)
for k,v in distribution.items():
for red in equally_weighted_dice:
d2[k+red] += v/len(equally_weighted_dice)
return d2
for _ in range(20):
distribution = convolve(distribution, [2,7,7,12,12, 17])
distribution = convolve(distribution, [3,8,8,13,13, 18])
# print_sorted_by_key(distribution)
cumulative = defaultdict(float)
acc = 0
for k in sorted(distribution):
acc += distribution[k]
cumulative[k] = acc
# print_sorted_by_key(distribution)
# print(sum(distribution.values()))
print_sorted_by_key(cumulative)