From 724662f647045b5829047b2fc2582a426f216436 Mon Sep 17 00:00:00 2001 From: Florent Madelaine Date: Wed, 26 Oct 2022 08:34:51 +0200 Subject: [PATCH] Fibo --- python/2/5Fib.py | 204 +++++++++++++++++++++++++++++++++++++++++++++++ python/2Prog.md | 2 +- 2 files changed, 205 insertions(+), 1 deletion(-) create mode 100755 python/2/5Fib.py diff --git a/python/2/5Fib.py b/python/2/5Fib.py new file mode 100755 index 0000000..76e4369 --- /dev/null +++ b/python/2/5Fib.py @@ -0,0 +1,204 @@ +#! /usr/bin/python3 +# -*- coding: utf-8 -*- + +def fib2(n): # return Fibonacci series up to n + """Return a list containing the Fibonacci series up to n.""" + result = [] + a, b = 0, 1 + while a < n: + result.append(a) # see below + a, b = b, a+b ### Attention subtil! + return result + +# print(fib2(4)) + +# ============== +# Monde séquentiel 1 +# a=3 +# b=7 + +# a=b +# b=a+b + +# a=7 +# b=7+7=14 + +# ============= +# Monde séquentiel 2 +# a=3 +# b=7 + +# b=a+b +# a=b + +# b=10 +# a=10 + +# ============= +# Monde simultané. + +# a=3 +# b=7 + +# idem +# a,b=3,7 + +# idem +# b=7 +# a=3. + +# pas de différence dans ce cas. + +# Par contre si je fais maintenant +# a, b = b, a+b ### Attention subtil! + +# signifie que maintenant : +# a vaut 7 (valeur de b avant de faire le changement) +# b vaut 10 (valeur de a+b avant de faire le changement) + +# === +# a, b = b, a+b ### Attention subtil! + +# a +# b +# (avant) + +# c=a+b # variable annexe +# a=b +# b=c + +# Maintenant a vaut bien la valeur de b avant +# et b vaut bien la valeur de la somme de a et b avant. + + +# La formule de math dit : +# la valeur de la suite pour 0 c'est 0 +# la valeur de la suite pour 1 c'est 1 +# la valeur de la suite pour n+2 c'est la somme des valeurs de la suite pour n+1 et pour n. +# f(0)=0 +# f(1)=1 +# f(n+2)=f(n+1)+f(n) +# +# f(6) = f(5) + f(4) = 5 + 3 = 8 +# f(5) = f(4)+ f(3) = 3 + 2 = 5 +# f(4) = f(3) + f(2) = 2 + 1 = 3 +# f(3) = f(2) + f(1) = 1 + 1 = 2 +# f(2) = f(1) + f(0) = 1 + 0 = 1 +# +# + +def f(n): + """calcul de la suite de fibonacci (récursif comme dans la définition)""" + print(" I ") + if (n == 0 ) : + return 0 + elif (n == 1) : + return 1 + else : + return f(n-1)+f(n-2) + +# print(f(0)) +# print(f(1)) +# print(f(2)) +# print(f(3)) ### affiche 5 fois le " I ". Pourquoi? +# print(f(4)) ### même question? affiche 9 fois le " I ". Pourquoi? +# print(f(5)) + + +# # f(3)? +# I +# return f(2)+f(1) #en attente du calcul de f(2) et de f(1) +# # f(2) +# I +# return f(1)+f(0) #en attente du calcul de f(1) et de f(0) +# # f(1) +# I +# # f(0) +# I +# # calcul fini +# # f(1) +# I +# #### + +# # f(4) +# I +# #f(3) +# I +# #f(2) +# I +# #f(1) +# I +# + +# #f(0) +# I +# + +# #f(1) +# I +# + +# #f(2) +# I +# #f(1) +# I +# + +# #f(0) +# I + +### plus simple avec une boucle + +# for n in range(1,10): +# print("f("+ str(n) + ")="+ str(f(n))) + +#début. +#a,b = 0,1 = f(0), f(1) # = f(n-2), f(n-1) +#a,b = b, a+b # = f(n-1), f(n-2)+f(n-1) qui vaut bien f(n) d'après la définition + +def fib3(n): # return Fibonacci series up to n + """Return the nth value of the sequence""" + a, b = 0, 1 + blanc=" " + dec="" + while a < n: + a, b = b, a+b ### Attention subtil! + dec+=blanc + print(dec,a,b) + return b + +print(fib3(4)) + +# def f(n): +# """calcul de la suite de fibonacci (récursif comme dans la définition mais en évitant de refaire des calculs)""" +# if (n == 0 ) : +# return 0 +# elif (n == 1) : +# return 1 +# else : +# return f(n-1)+f(n-2) + + +# 8*8 cases et 16*2 pièces. +# le joueur qui doit jouer (2 possiblités) +# le nombre de positions de pièces sur l'échiquiers. +# 32 +# +# 64*63*62*...*32 +# +# 5 pièces choisies roi noir, roi blanc, fou noir de la case noir, un pion noir, un pion blanc +# 64*63*62*61*60 possibilités au plus +# *2 pour le joueur dont c'est le tour. +# python dit : 1 829 882 880. +# +# il faut encore choisir toutes les combinaisons de 5 pièces possibles. +# /2 en échangeant le rôle de noir et blanc +# symétries gauche/droit +# roi noir, roi blanc +# 3 pièces à choisir parmi 15+15 +# 30*29*28 + +# En gros au plus : +# 22 287 973 478 400 +# + +# Pour le Go non plus maintenant. +# Pour les échecs plus maintenant. + +# pour battre Kasparov oui. diff --git a/python/2Prog.md b/python/2Prog.md index 846ebae..81cc674 100644 --- a/python/2Prog.md +++ b/python/2Prog.md @@ -103,7 +103,7 @@ Puis les garder seulement pour vois en les enlevant au groupe (group, g pour fai ```bash $ chmod g-x 0LoopOnWord.py $ ls -l --rw-rwxr-- 1 madelaine madelaine 133 oct. 13 22:34 0LoopOnWord.py +-rw-rw-r-- 1 madelaine madelaine 133 oct. 13 22:34 0LoopOnWord.py ``` Dès que quelqu'un a les droits d'exécution il peut faire. ```bash