from random import randint
completed = [
0,4,3,3,3,3,1,1,1
]
def check(instances):
for i, c in enumerate(completed):
if instances[i] < c:
return False
return True
attempts = 100
total_rolls = 0
highest = 0
lowest = 100
for _ in range(attempts):
rolls = 0
instances = [0,0,0,0,0,0,0,0,0]
while not check(instances):
i = randint(1, 8)
while i > 0 and instances[i] >= completed[i]:
i -= 1
instances[i] += 1
rolls += 1
total_rolls += rolls
if rolls > highest:
highest = rolls
if rolls < lowest:
lowest = rolls
print(f"attempts: {attempts}, total_rolls = {total_rolls}, average_rolls = {total_rolls / attempts}, highest = {highest}, lowest = {lowest}")
ZnJvbSByYW5kb20gaW1wb3J0IHJhbmRpbnQKCmNvbXBsZXRlZCA9IFsKICAgIDAsNCwzLDMsMywzLDEsMSwxCl0KCmRlZiBjaGVjayhpbnN0YW5jZXMpOgogICAgZm9yIGksIGMgaW4gZW51bWVyYXRlKGNvbXBsZXRlZCk6CiAgICAgICAgaWYgaW5zdGFuY2VzW2ldIDwgYzoKICAgICAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgcmV0dXJuIFRydWUKCmF0dGVtcHRzID0gMTAwCnRvdGFsX3JvbGxzID0gMApoaWdoZXN0ID0gMApsb3dlc3QgPSAxMDAKCmZvciBfIGluIHJhbmdlKGF0dGVtcHRzKToKICAgIHJvbGxzID0gMAogICAgaW5zdGFuY2VzID0gWzAsMCwwLDAsMCwwLDAsMCwwXQogICAgd2hpbGUgbm90IGNoZWNrKGluc3RhbmNlcyk6CiAgICAgICAgaSA9IHJhbmRpbnQoMSwgOCkKCiAgICAgICAgd2hpbGUgaSA+IDAgYW5kIGluc3RhbmNlc1tpXSA+PSBjb21wbGV0ZWRbaV06CiAgICAgICAgICAgIGkgLT0gMQoKICAgICAgICBpbnN0YW5jZXNbaV0gKz0gMQogICAgICAgIHJvbGxzICs9IDEKCiAgICB0b3RhbF9yb2xscyArPSByb2xscwoKICAgIGlmIHJvbGxzID4gaGlnaGVzdDoKICAgICAgICBoaWdoZXN0ID0gcm9sbHMKCiAgICBpZiByb2xscyA8IGxvd2VzdDoKICAgICAgICBsb3dlc3QgPSByb2xscwogICAgCnByaW50KGYiYXR0ZW1wdHM6IHthdHRlbXB0c30sIHRvdGFsX3JvbGxzID0ge3RvdGFsX3JvbGxzfSwgYXZlcmFnZV9yb2xscyA9IHt0b3RhbF9yb2xscyAvIGF0dGVtcHRzfSwgaGlnaGVzdCA9IHtoaWdoZXN0fSwgbG93ZXN0ID0ge2xvd2VzdH0iKQ==