# -*- coding: utf-8 -*-
"""
@author: fabien
"""
import time
from pylab import *
from matplotlib import *

def hanoi_graph(n):
    """Tour de Hanoi avec rendu graphique"""
    global compt
    L=[[k for k in range(n,0,-1)],[],[]] 
    # contient les listes représentant les piquets 1, 2, 3.
    compt=0 # compteur de coups
    
    def afficher():
        """Affichage en fonction du contenu des listes dans L"""
        print('*****')
        for k in (0,1,2):
            ligne="*["+str(k+1)+"]: "
            for j in L[k]:
                ligne+=str(j)
            print(ligne)
        print('*****\n')
   
    def hanoi(nb,pos_init,pos_fin):
        """Tour de Hanoi récursif avec affichage"""
        global compt
        if nb!=0:                           
            # Position intermédiaire
            pos_inter=6-pos_init-pos_fin    
            
            # Premier appel récursif
            hanoi(nb-1,pos_init,pos_inter)
            
            # On incrémente le compteur
            compt+=1                        
            
            # On déplace effectivement la pièce
            L[pos_fin-1].append(L[pos_init-1].pop())
            
            # On l'affiche
            print(compt,": Déplacer de",pos_init,"vers",pos_fin)
            afficher()
            
            # Deuxième appel récursif
            hanoi(nb-1,pos_inter,pos_fin)
         
    hanoi(n,1,3)
    print("C'est gagné en",compt,"coups !")
 
#tracer en fonction de N
x=[]
y=[]    
#on compte combien de temps pour la méthode globale    
for i in range(3,10):
    debutglobal=time.time()  
    hanoi_graph(i)
    tempsecoule=time.time() - debutglobal
    print("Le temps ecoule pour la methode globale est ", tempsecoule , "s")  
    x.append(i)
    y.append(tempsecoule)


plot(x,y)