Fibo
This commit is contained in:
parent
0214c87c6c
commit
724662f647
204
python/2/5Fib.py
Executable file
204
python/2/5Fib.py
Executable file
@ -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.
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user