Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Pearls in the Box by Paul-Yuchao-Dong
def checkio(marbles, step):
return round(recursion(marbles, step),2)
def recursion(marbles, step):
w_prob = round(marbles.count('w') / len(marbles),3)
if step == 1:
return w_prob
b_prob = 1 - w_prob
return round(w_prob * recursion(marbles.replace('w','b',1), step-1) + b_prob * recursion(marbles.replace('b','w',1), step-1),3)
#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"
Dec. 5, 2016