HP Forums

Full Version: Tower of Hanoi (Tour de Hanoi)
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Prompted by my recent involvement with a team activity to solve the Tower of Hanoi, I produced this little program..

Unlike all the existing versions I have seen, this one allows you to enter a challenge time, and calculates the average time per move - or enter an average move time and calculate how long a practical activity with real objects will need.
Version 1 is available in English Francais and Polskie (with help from Google Translate).

It implements the minimum 3-towers solution to the problem.
It lists the required moves in lists L1 (from) and L2 (to).
There is no animation of the contents of each tower.

 LOCAL STHANOI:={"Tower of Hanoi","Wieża Hanoi","Tour de Hanoi"};
 LOCAL STG:=" StephenG1CMZ ";
 LOCAL CRID:=" ©2016"+STG; 



 LOCAL LANGS:={"English","Polskie","Français"};


 LOCAL STVER:={"Version ","Wersja ","Version "}+ VERNUM;
 LOCAL THREET:={": 3 Towers",": 3 Wieże",": 3 Tours"};
 LOCAL NITEMS:=5; //0..13;
 LOCAL STFIRST:={"1st","1-ty","1er"};




 LOCAL STOBJ:={" Objects",""," Objets"};
  {"# objects","From","To","Via",
  {"# obiekty","Od","Do","Przez","Czas Caŀkowity","Przesunąć czas"},
  {"# objets","De","À","Via","Temps Totale","DéplacerTemps"}};
  {"Number of objects to move [0..13]",
  "Name of From/1st Tower",
  "Name of To/Destination Tower",
  "Name of Via/Temporary Tower",
  {"Liczbe obkiektõw, aby przenieść [0..13]",
   "Nazwa Z/1-ty wieży",
   "Nazwa Do/Preznacenia wieży",
   "Nazwa Poprzez/Tymczasowej wieży",
   "Dopuszczalny czas -> przewidywany czas na ruch",
   "Szacowany czas ruch -> czas potrzebny"},
  {"Nombre d'objets à déplacer [0..13]",
   "Nom de De/1er Tour","Nom de À/Tour de destination","Nom de Via/Tour Temporaire",
   "Temps imparti -> heure par coup","déplacer le temps -> temps nécessaire estimée"}};

 LOCAL STTOOMANY:={"too many moves to list","zbyt wiele ruchów do listy","trop de coups à la liste"};
 LOCAL STOBJNEEDS:={" objects need "," przedmioty potrzebne "," objets ont besoin de "};
 LOCAL STMOVES:={" moves"," porusza"," mouvements"};
 LOCAL STPERMOVE:={" per move"," za ruch"," par coup"};
 LOCAL STESTDUN:={"Estimated completion in ","Szacuje się zakończenie ","L'estimation d'achèvement "};
 LOCAL STLIST:={"Listing ","Wymienianie kolejno ","Liste des "};
  "{Esc Shift List Edit} to see lists ",
  "{Esc Shift List Edit} aby zobaczyć list ",
  "{Esc Shift List Editer}pour voir les listes"};

  LOCAL ST:="*** Esc ***";

    //RETURN 0;
   RETURN 1;
   RETURN 0;



    INSTR:=(MOVES-NMOVE+1)+"↔"+NMOVE+": "+TFROM+" -> "+TTO;




    PRINT(IFTE(TM<1000,TM+" ms",ROUND(TM/1000,0)+" s"));

   L1:={}; L2:={}; //LIST L1 FROM L2 TO




   //OKC:=1;//MUST NOT =Z_ESC

     //DO ACTION

Dzien dobry

Reference URL's