import matplotlib.pyplot as plt

# Question b.
def c(n):
    s=0
    for k in range(n+1):
        if k%2==0 and (n-k)%3==0:
            s=s+1
    return s

# Question c.
print()
print()
print('c. Comparaison de c(n) et c(n+6)')
for n in range(185):
    print([c(n),c(n+6)])
# On observe  c(n+6)=c(n)+1 expérimentalement.    

    
# Question e.
def D(n):
    s=[]
    for p in range(n+1):
        for q in range(n+1):
            if 2*p+3*q==n:
                s.append([p,q])
    return s
    
def d(n):
    return len(D(n))
    
# Question f.
print()
print()    
print('f. Comparaison de c(n) et d(n)')
for n in range(20):
    print([c(n),d(n)])
# On observe  c(n+6)=c(n)+1 expérimentalement.
   
   
# Bonus (représentation graphique de f
# et d'une somme partielle de la série entière)
print()
print()
print('représentation graphique')
f=lambda x: 1/(1-x**2)/(1-x**3)    
lx=[i/100 for i in range(95)]
ly=[f(i/100) for i in range(95)]
plt.plot(lx,ly)
plt.show()

def g(x):
    s=0
    for k in range(21):
        s=s+c(k)*x**k
    return s
    
lx=[i/100 for i in range(95)]
ly=[g(i/100) for i in range(95)]
plt.plot(lx,ly)
plt.show()    