Towers of Hanoi: Difference between revisions

m
No edit summary
Line 3,665:
 
=={{header|lambdatalk}}==
 
(Following NewLisp, PicoLisp, Racket, Scheme)
<syntaxhighlight lang="scheme">
PSEUDO-CODE:
{def move
 
{lambda {:n :from :to :via}
hanoi disks from A to B via C
{if {<= :n 0}
if thenno >disks
then stop
else {move {- :n 1} :from :via :to}
else hanoi upper move disk :ndisks from :fromA to :toC via {br}B
{move {- :nlower 1}disk :via :from A to :from}B }}}
hanoi upper disks from C to B via A
-> move
 
{move 4 A B C}
CODE:
> move disk 1 from A to C
 
> move disk 2 from A to B
{def hanoi
> move disk 1 from C to B
{lambda {:nh :froma :tob :viac}
> move disk 3 from A to C
{if {<=A.empty? :n 0h}
> move disk 1 from B to A
then
> move disk 2 from B to C
else {movehanoi {-A.rest :n 1h} :froma :viac :tob}
> move disk 1 from A to C
{div}> move disk{A.first 4:h} from A:a to B:b
{hanoi {A.rest :h} :c :b :a} }}}
> move disk 1 from C to B
-> hanoi
> move disk 2 from C to A
 
> move disk 1 from B to A
{hanoi {A.new ==== === == =} A B C}
> move disk 3 from C to B
-> move
> move disk 1 from A to C
> move disk 2= from A to BC
> move disk 1== from CA to B
> move disk 1= from C to B
> move disk 1=== from A to C
> move disk 1= from B to A
> move disk 2== from B to C
{> move 4= from A Bto C}
> move disk 2==== from A to B
> move disk 3= from C to B
> move disk 2== from C to A
> move disk 1= from B to A
> move disk 1=== from AC to CB
> move disk 3= from A to C
> move disk 1== from A to CB
> move disk 1= from C to B
</syntaxhighlight>
 
99

edits