mwchase icon

Fiddler 2023-12-01

mwchase | PRO | 12/04/23 01:05:47 AM UTC | 0 ⭐ | 1990 👁️ | Never ⏰ | []
Python |

1.83 KB

|

None

|

0 👍

/

0 👎

import marimo
 
__generated_with = "0.1.58"
app = marimo.App()
 
 
@app.cell
def __():
    import fractions
    return fractions,
 
 
@app.cell
def __(fractions):
    _transitions = {i: fractions.Fraction(6 - abs(i - 7), 36) for i in range(2, 13)}
 
    assert sum(_transitions.values()) == 1
 
    def probabilities_from_1_to_n(n=39):
        probabilities = {i: fractions.Fraction() for i in range(-11, 0)}
        probabilities[0] = fractions.Fraction(1)
        for i in range(1, n + 1):
            probabilities[i] = sum(probabilities[i - k] * v for (k, v) in _transitions.items())
        for i in range(-11, 1):
            del probabilities[i]
        return probabilities
        
    return probabilities_from_1_to_n,
 
 
@app.cell
def __(probabilities_from_1_to_n):
    sorted(probabilities_from_1_to_n().items(), key=lambda p: -p[1])
    return
 
 
@app.cell
def __(fractions):
    _transitions = {i: fractions.Fraction() for i in range(3, 19)}
 
    for i in range(1, 7):
        for j in range(1, 7):
            for k in range(1, 7):
                _transitions[i + j + k] += fractions.Fraction(1, 216)
 
    assert sum(_transitions.values()) == 1
 
    def probabilities_from_1_to_n_3d(n=39):
        probabilities = {i: fractions.Fraction() for i in range(-17, 0)}
        probabilities[0] = fractions.Fraction(1)
        for i in range(1, n + 1):
            probabilities[i] = sum(probabilities[i - k] * v for (k, v) in _transitions.items())
        for i in range(-17, 1):
            del probabilities[i]
        return probabilities
    return i, j, k, probabilities_from_1_to_n_3d
 
 
@app.cell
def __(probabilities_from_1_to_n_3d):
    sorted(probabilities_from_1_to_n_3d().items(), key=lambda p: p[1])
    return
 
 
@app.cell
def __():
    return
 
 
if __name__ == "__main__":
    app.run()

Comments