Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Recursive conditional probability solution in Clear category for Pearls in the Box by joseph.kim.sungha
def checkio(marbles, step):
b = marbles.count("b")
w = marbles.count("w")
if step == 1:
return w / len(marbles)
pr = 0
if b:
pr += (b / len(marbles)) * checkio("b" * (b - 1) + "w" * (w + 1), step - 1)
if w:
pr += (w / len(marbles)) * checkio("w" * (w - 1) + "b" * (b + 1), step - 1)
return pr
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert checkio('bbw', 3) == 0.48, "1st example"
assert checkio('wwb', 3) == 0.52, "2nd example"
assert checkio('www', 3) == 0.56, "3rd example"
assert checkio('bbbb', 1) == 0, "4th example"
assert checkio('wwbb', 4) == 0.5, "5th example"
assert checkio('bwbwbwb', 5) == 0.48, "6th example"
June 4, 2016