# DS2
print('Partie I')

def valeur(P,x) :
    s = 0
    for k in range(len(P)) :
                   s += P[k]*x**k
    return s

def deriv(P):
    L = []
    for k in range(1,len(P)):
        L.append(k*P[k])
    return L
        
print(valeur(deriv([0, 0.2, 0.2, 0.2, 0.2, 0.2]),1))    

print('Partie II')
import random as rd

def lancer():
    if rd.random() < 0.5 :
        return 1
    return 0

def jeu():
    a,b,c = lancer(), lancer(), lancer()
    while [a,b,c] != [1,1,0] and [a,b,c] != [0,1,1]:
        a,b,c = b,c,lancer()
    if [a,b,c] != [1,1,0] :
        return 1
    return 2

s,t = 0,0
for k in range(10000):
    if jeu() == 1 :
        s += 1
    else:
        t += 1
print([s/10000, t/10000])

def T():
    a,b,c = lancer(), lancer(), lancer()
    t = 3
    while [a,b,c] != [1,1,0] and [a,b,c] != [0,1,1]:
        a,b,c = b,c,lancer()
        t += 1
    return t

s = 0
for k in range(10000):
    s += T()
print(s/10000)

print('Partie III')
def X(n):
    pop = 1
    for k in range(n):
        s = 0
        for i in range(pop):
            if rd.random() < 2/3 :
                s += 2
        pop = s
    return pop

def pr(n):
    s = 0
    for k in range(10000):
        if X(n) == 0 :
            s += 1
    return s/10000

print([pr(n) for n in range(11)])
    