Witsaff/Appendix

From Esolang
Jump to navigation Jump to search

Simulation for the fancy example:

from collections import Counter
from fractions import Fraction
from itertools import permutations

cols = "cash", "cash", "key", "toolkey", "tool", "treasure"
valid = []

for p in permutations(cols, 6):
    inv = set([p[0], p[2]])
    done = cannon = beam = boss = False
    while not done:
        done = True
        if "key" in inv and not cannon:
            inv.update([p[1], p[3]])
            cannon = True
            done = False
        if "toolkey" in inv and not beam:
            inv.add(p[4])
            beam = True
            done = False
        if "tool" in inv and not boss:
            inv.add(p[5])
            boss = True
            done = False
    if "treasure" in inv: valid.append(p)

def frac(f): return str(Fraction(f).limit_denominator())

l = len(valid)
print("Count:", l)
for i in range(6):
    counter = Counter(p[i] for p in valid)
    print("Row", i, "sum", sum(counter.values()))
    print(*[frac(counter[k] / l) for k in cols])