Blogdemaths

Calcul de A(m,n) avec étapes

Mar 25th, 2014
206
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #
  2. #  blogdemaths.wordpress.com
  3. #
  4.  
  5.  
  6.  
  7.  
  8.  
  9. # Etant donnée une liste d'entiers [a,b,c...], cette fonction affiche
  10. # la chaine de caractères: A(a,A(b,A(c,A(...)))))
  11.  
  12. def afficher(liste):
  13.     l=len(liste)
  14.  
  15.     string = ''
  16.    
  17.     for k in range(l-1):
  18.         string += 'A('+ str(liste[k])+","
  19.  
  20.     string += str(liste[l-1])
  21.  
  22.     for k in range(l-1):
  23.         string = string + ")"
  24.        
  25.     return string
  26.  
  27.  
  28. # Calcule la valeur A(m,n) tout en affichant les calculs intermédiaires
  29. # dans un fichier texte.
  30. # Les valeurs successives de m sont mises dans une liste
  31. # ainsi que la valeur actuelle de n (en dernière position).
  32.  
  33. def A(m,n):
  34.  
  35.     liste=[m,n]
  36.     l=2 # Longueur de la liste.
  37.    
  38.     fichier = open("A(m,n).txt","w")
  39.     fichier.write(afficher(liste)) # Ecrit "A(m,n)" dans le fichier texte.
  40.  
  41.  
  42.     while m>0 and l>1:
  43.        
  44.         if n==0: #A(m,0) = A(m-1,1)
  45.             m=m-1
  46.             n=1
  47.             liste[l-2]=m
  48.             liste[l-1]=1
  49.             fichier.write("\t= "+afficher(liste)+"\n")
  50.  
  51.             while liste[l-2]==0: # Calcul des A(0,n)=n+1 quand ils apparaissent
  52.                                  # et réduction de la liste.
  53.                 n+=1
  54.                 liste[l-2]=n
  55.                 liste.pop(l-1)
  56.                 l=l-1
  57.                 fichier.write("\t= "+afficher(liste)+"\n")
  58.  
  59.             m=liste[l-2]
  60.            
  61.         else:   # A(m,n)=A(m-1,A(m,n-1)).
  62.             n=n-1
  63.             liste[l-2]=m-1
  64.             liste[l-1]=m
  65.             liste.append(n)
  66.             l+=1
  67.             fichier.write("\t= "+afficher(liste)+"\n")
  68.  
  69.     fichier.close()
  70.            
  71.     return liste[0]
  72.  
  73.    
  74. print(A(3,1))
RAW Paste Data