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()