Towers of Hanoi: Difference between revisions

m
(+Icon+Unicon)
Line 445:
procedure hanoi(n, needle1, needle2) #: solve towers of hanoi by moving n disks from needle 1 to needle2 via other
local other
 
/needle1 := 1 # 1 default
n := integer(0 < n) | runerr(n,101) # 31 ensure integer (this also ensures it's positive too)
/needle2 := 2 # 2 default
/needle1 := 1 # 12 default
n := integer(0 < n) | runerr(n,101) # 3 ensure integer (this also ensures it's positive too)
/needle2 := 2 # 23 default
 
if n = 1 then
write("Move disk from ", needle1, " to ", needle2)
else {
other := 6 - needle1 - needle2 # clever but somewhat un-iconish way to find other
hanoi(n-1, needle1, other) # n-1, src, via, dest
write("Move disk from ", needle1, " to ", needle2)
hanoi(n-1, other, needle2) # n-1, via, dist, src
}
return
end</lang>
 
==={{header|Unicon}}===
This Icon solution works in Unicon.
Anonymous user