## 

def hanoi(n,source,dest,aux):
    if n==1:
        print("Deplacer du piquer "+source+" au piquet "+dest)
    else:
        hanoi(n-1,source,aux,dest)
        print("Deplacer du piquer "+source+" au piquet "+dest)
        hanoi(n-1,aux,dest,source)
hanoi(4,"A","C","B")
































##
def deplacer(lst,source,dest):
    lst[dest].append(lst[source].pop())

def printHanoi(lst):
    # calcul de la hauteur
    h=sum([len(lst[k]) for k in range(3)])
    for k in range(h):
        for c in range(3):
            if len(lst[c])>=h-k:
                bloc=lst[c][h-k-1]
                vide=h-bloc
                print(" "*vide+"-"*bloc+"|"+"-"*bloc+" "*vide,end=" ")
            else:
                print(" "*h+"|"+" "*h,end=" ")
        print()
    print(("="*(2*h+1)+" ")*3)

#printHanoi([[4,3,2,1],[],[]])
#printHanoi([[4,2],[3],[1]])

def resHanoi(lst,n,source,dest,aux):
    if n==1:
        print(" Déplacement de "+str(source)+" vers "+str(dest))
        deplacer(lst,source,dest)
        printHanoi(lst)
    else:
        resHanoi(lst,n-1,source,aux,dest)
        print(" Déplacement de "+str(source)+" vers "+str(dest))
        deplacer(lst,source,dest)
        printHanoi(lst)
        resHanoi(lst,n-1,aux,dest,source)

h=4
#lst=[[4,3,2,1],[],[]]
lst=[[k for k in range(h,0,-1)],[],[]]

print("debut")
printHanoi(lst)
#resHanoi(lst,4,0,2,1)
resHanoi(lst,h,0,2,1)
print("fin")
