Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #
- # blogdemaths.wordpress.com
- #
- # Etant donnée une liste d'entiers [a,b,c...], cette fonction affiche
- # la chaine de caractères: A(a,A(b,A(c,A(...)))))
- def afficher(liste):
- l=len(liste)
- string = ''
- for k in range(l-1):
- string += 'A('+ str(liste[k])+","
- string += str(liste[l-1])
- for k in range(l-1):
- string = string + ")"
- return string
- # Calcule la valeur A(m,n) tout en affichant les calculs intermédiaires
- # dans un fichier texte.
- # Les valeurs successives de m sont mises dans une liste
- # ainsi que la valeur actuelle de n (en dernière position).
- def A(m,n):
- liste=[m,n]
- l=2 # Longueur de la liste.
- fichier = open("A(m,n).txt","w")
- fichier.write(afficher(liste)) # Ecrit "A(m,n)" dans le fichier texte.
- while m>0 and l>1:
- if n==0: #A(m,0) = A(m-1,1)
- m=m-1
- n=1
- liste[l-2]=m
- liste[l-1]=1
- fichier.write("\t= "+afficher(liste)+"\n")
- while liste[l-2]==0: # Calcul des A(0,n)=n+1 quand ils apparaissent
- # et réduction de la liste.
- n+=1
- liste[l-2]=n
- liste.pop(l-1)
- l=l-1
- fichier.write("\t= "+afficher(liste)+"\n")
- m=liste[l-2]
- else: # A(m,n)=A(m-1,A(m,n-1)).
- n=n-1
- liste[l-2]=m-1
- liste[l-1]=m
- liste.append(n)
- l+=1
- fichier.write("\t= "+afficher(liste)+"\n")
- fichier.close()
- return liste[0]
- print(A(3,1))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement