2018-10-31 13:08:44 +00:00
|
|
|
#!/usr/bin/python3
|
|
|
|
|
|
|
|
from itertools import count
|
|
|
|
import random
|
|
|
|
|
|
|
|
from util.io import readvalue
|
|
|
|
|
|
|
|
def peter_coin_series(randf = random.randint):
|
|
|
|
result = 0
|
|
|
|
|
|
|
|
for k in count(1):
|
|
|
|
if(randf(0, 1) < 0.5):
|
|
|
|
return (result, k)
|
2018-11-07 14:19:36 +00:00
|
|
|
result = 2**k
|
2018-10-31 13:08:44 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if( __name__ == "__main__"):
|
|
|
|
|
|
|
|
def positive_int(s):
|
|
|
|
i = int(s)
|
|
|
|
if(i <= 0):
|
|
|
|
raise ValueError("{} is negative".format(i))
|
|
|
|
return i
|
|
|
|
|
|
|
|
print("I am going to toss a coin many times.\n"
|
|
|
|
"You are going to win 2**k if no head appears afer k throws.\n")
|
|
|
|
|
|
|
|
bet = readvalue("How many ducats do you want to bet? ", positive_int)
|
|
|
|
result, throws = peter_coin_series()
|
|
|
|
|
|
|
|
win = bet - result
|
|
|
|
|
|
|
|
if(win < 0):
|
|
|
|
print("Bad, A head came out on throw #{}. You lost {} ducats.".format(throws, -win))
|
|
|
|
else:
|
|
|
|
print("You won {} ducats.".format(win))
|
|
|
|
|