Le problème des tours de Hanoï
Le but du problème est de déplacer tous les disques de la première tige vers la dernière en ne mettant jamais un disque plus grand sur un plus petit.
Grace à la méthode diviser pour régner et la récursivité, nous allons coder la solution en quelques lignes.
la fonction permet de trouver les déplements nécessaire pour déplacer une tour de n disques de la tige A vers la tige C en utilisant la tour annexe B.
Python
def hanoi(n:int, depart: str = 'A', dest: str = 'C', interm: str = 'B') -> None:
'''
Utilise la récursivité et la méthode diviser pour régner
en divisant le problème tour de n A -> C
1) tour de n - 1 de A vers B
2) disque de taille n de A vers C
Puis en combinant en re déplaçant
tour de n - 1 disques de B vers C
'''
if n == 1:
print(f" Déplace disque 1 de {depart} vers {dest}")
return None
# Diviser
hanoi(n - 1, depart, interm, dest)
print(f" Déplace disque {n} de {depart} vers {dest}")
# Combiner
hanoi(n - 1, interm, dest, depart)
voici l'affichage
hanoi(3) Déplace disque 1 de A vers C Déplace disque 2 de A vers B Déplace disque 1 de C vers B Déplace disque 3 de A vers C Déplace disque 1 de B vers A Déplace disque 2 de B vers C Déplace disque 1 de A vers C