Jump to content

Towers of Hanoi: Difference between revisions

(added Inform 7 solution)
Line 1,095:
left -> middle
right -> middle</pre>
 
=={{header|REXX}}==
==version 1==
<lang rexx>
/*REXX program to show the moves to solve the Tower of Hanoi (3 disks). */
 
arg z .
if z=='' then z=3
move=0
moves=2**z-1
call mov 1,3,z
say
say 'The minimum number of moves to solve a' z "ring Tower of Hanoi is" moves'.'
exit
 
 
/*─────────────────────────────MOV subroutine───────────────────────────*/
mov: if arg(3)==1 then call dsk arg(1),arg(2)
else do
call mov arg(1),6-arg(1)-arg(2),arg(3)-1
call mov arg(1),arg(2),1
call mov 6-arg(1)-arg(2),arg(2),arg(3)-1
end
return
 
 
/*─────────────────────────────DSK subroutine───────────────────────────*/
dsk: move=move+1
say 'step' right(move,length(moves))": move disk " arg(1) '-->' arg(2)
return
</lang>
Output:
<pre style="height:30ex;overflow:scroll">
step 1: move disk 1 --> 3
step 2: move disk 1 --> 2
step 3: move disk 3 --> 2
step 4: move disk 1 --> 3
step 5: move disk 2 --> 1
step 6: move disk 2 --> 3
step 7: move disk 1 --> 3
 
The minimum number of moves to solve a 3 ring Tower of Hanoi is 7.
</pre>
Output when the following was entered (to solve with four disks):
<br><br>
4
<pre style="height:30ex;overflow:scroll">
step 1: move disk 1 --> 2
step 2: move disk 1 --> 3
step 3: move disk 2 --> 3
step 4: move disk 1 --> 2
step 5: move disk 3 --> 1
step 6: move disk 3 --> 2
step 7: move disk 1 --> 2
step 8: move disk 1 --> 3
step 9: move disk 2 --> 3
step 10: move disk 2 --> 1
step 11: move disk 3 --> 1
step 12: move disk 2 --> 3
step 13: move disk 1 --> 2
step 14: move disk 1 --> 3
step 15: move disk 2 --> 3
 
The minimum number of moves to solve a 4 ring Tower of Hanoi is 15.
</pre>
Output when the following was entered (to solve with five disks):
<br><br>
5
<pre style="height:30ex;overflow:scroll">
step 1: move disk 1 --> 3
step 2: move disk 1 --> 2
step 3: move disk 3 --> 2
step 4: move disk 1 --> 3
step 5: move disk 2 --> 1
step 6: move disk 2 --> 3
step 7: move disk 1 --> 3
step 8: move disk 1 --> 2
step 9: move disk 3 --> 2
step 10: move disk 3 --> 1
step 11: move disk 2 --> 1
step 12: move disk 3 --> 2
step 13: move disk 1 --> 3
step 14: move disk 1 --> 2
step 15: move disk 3 --> 2
step 16: move disk 1 --> 3
step 17: move disk 2 --> 1
step 18: move disk 2 --> 3
step 19: move disk 1 --> 3
step 20: move disk 2 --> 1
step 21: move disk 3 --> 2
step 22: move disk 3 --> 1
step 23: move disk 2 --> 1
step 24: move disk 2 --> 3
step 25: move disk 1 --> 3
step 26: move disk 1 --> 2
step 27: move disk 3 --> 2
step 28: move disk 1 --> 3
step 29: move disk 2 --> 1
step 30: move disk 2 --> 3
step 31: move disk 1 --> 3
 
The minimum number of moves to solve a 5 ring Tower of Hanoi is 31.
</pre>
 
=={{header|Ruby}}==
Cookies help us deliver our services. By using our services, you agree to our use of cookies.