from pprint import pprint
from typing import NamedTuple
import itertools
class Category(NamedTuple):
symbols: list
ratio: int
payout: int
categories = [
Category("♦️ ♠️ ♥️ ♣️".split(), 4, 2),
Category("⚧ 🔞 ⚛️ ☢️".split(), 3, 3),
Category("✡️ ⚔️".split(), 2, 5),
Category("🐱".split(), 1, 100),
]
symbols = [s for c in categories for s in c.symbols for _ in range(c.ratio)]
payouts = {s: c.payout for c in categories for s in c.symbols}
def payout(s1, s2, s3):
if s1 == s2 == s3:
return payouts[s1] - 1 # the code doesn't explicitly refund the bet
if s1 == s2 or s1 == s3 or s2 == s3 or "🐱" in (s1, s2, s3):
return 1
return 0
print(sum(payout(*sss) for sss in itertools.product(symbols,symbols,symbols)) / len(symbols)**3)
ZnJvbSBwcHJpbnQgaW1wb3J0IHBwcmludApmcm9tIHR5cGluZyBpbXBvcnQgTmFtZWRUdXBsZQppbXBvcnQgaXRlcnRvb2xzCgpjbGFzcyBDYXRlZ29yeShOYW1lZFR1cGxlKToKICAgIHN5bWJvbHM6IGxpc3QKICAgIHJhdGlvOiBpbnQKICAgIHBheW91dDogaW50CgpjYXRlZ29yaWVzID0gWwogICAgQ2F0ZWdvcnkoIuKZpu+4jyDimaDvuI8g4pml77iPIOKZo++4jyIuc3BsaXQoKSwgNCwgMiksCiAgICBDYXRlZ29yeSgi4pqnIPCflJ4g4pqb77iPIOKYou+4jyIuc3BsaXQoKSwgMywgMyksCiAgICBDYXRlZ29yeSgi4pyh77iPIOKalO+4jyIuc3BsaXQoKSwgMiwgNSksCiAgICBDYXRlZ29yeSgi8J+QsSIuc3BsaXQoKSwgMSwgMTAwKSwKXQoKc3ltYm9scyA9IFtzIGZvciBjIGluIGNhdGVnb3JpZXMgZm9yIHMgaW4gYy5zeW1ib2xzIGZvciBfIGluIHJhbmdlKGMucmF0aW8pXQpwYXlvdXRzID0ge3M6IGMucGF5b3V0IGZvciBjIGluIGNhdGVnb3JpZXMgZm9yIHMgaW4gYy5zeW1ib2xzfQoKZGVmIHBheW91dChzMSwgczIsIHMzKToKICAgIGlmIHMxID09IHMyID09IHMzOgogICAgICAgIHJldHVybiBwYXlvdXRzW3MxXSAtIDEgIyB0aGUgY29kZSBkb2Vzbid0IGV4cGxpY2l0bHkgcmVmdW5kIHRoZSBiZXQKICAgIGlmIHMxID09IHMyIG9yIHMxID09IHMzIG9yIHMyID09IHMzIG9yICLwn5CxIiBpbiAoczEsIHMyLCBzMyk6CiAgICAgICAgcmV0dXJuIDEKICAgIHJldHVybiAwCgpwcmludChzdW0ocGF5b3V0KCpzc3MpIGZvciBzc3MgaW4gaXRlcnRvb2xzLnByb2R1Y3Qoc3ltYm9scyxzeW1ib2xzLHN5bWJvbHMpKSAvIGxlbihzeW1ib2xzKSoqMykK