Les tours jumelles de Hanoï linéaire

Cette variante est un mélange entre d'une part les tours séparées et interclassées, et d'autre part les tours linéaires. Nous avons deux piles de disques, et trois piquets. Il faut inverser la position des piles en respectant les règles de mouvement habituelles des tours de Hanoï (un seul disque à la fois, et pas de grand disque sur les petits disques) ainsi que les restrictions du mouvement linéaire (pas d'échange direct entre les piquets des extrémités).

Vous aurez besoin de trois fonctions récursives :

Dans rassemble(), l'appel récursif vient avant deux appels à deplaceInterclassee tandis que dans repartis() les appels à deplaceInterclassee arrivent avant l'appel récursif. La fonction principale que vous devez écrire n'est pas récursive, mais rassemble simplement la plupart des disques, déplace les disques restants, puis répartit de nouveau les petits disques.

La linéarité ajoute certainement un peu de complexité puisqu'il faut décomposer tous les mouvements entre les piquets n°0 et n°2, mais je reste confiant dans votre capacité à résoudre cette épreuve :)

Remarquez que l'algorithme demandé a été prouvé optimal pour ce problème. Il n'est donc pas utile aujourd'hui de chercher à optimiser plus que demandé.