Towers of Hanoi: Difference between revisions

From Rosetta Code
Content added Content deleted
mNo edit summary
(revert spam)
Line 1: Line 1:
{{task}}
[http://deviantrus.ifrance.com/topic/ati-xpro/ ati x600pro dvi vivo] [http://demurediablo.ifrance.com/library/html/film-al/ film al lux] [http://girlwho-is.ifrance.com/img/styles/canon-power.htm canon power shot s2] [http://tat-ooin.ifrance.com/resources/articles/lultimo-bambino.htm lultimo bambino] [http://tat-ooin.ifrance.com/resources/articles/palmare-hp.htm palmare hp 1930] [http://lovereceier.ifrance.com/lib/video-proiettore.htm video proiettore philips] [http://toofarfrommaybe.ifrance.com/view/new/nintendo-gamecube/ nintendo gamecube accessori console] [http://demurediablo.ifrance.com/library/html/rexton-km/ rexton km zero] [http://yeeden.ifrance.com/img/styles/cartina-geografica/ cartina geografica germania] [http://jdawsona.ifrance.com/data/samsung-/ samsung 32 crt] [http://yeeden.ifrance.com/img/styles/witch/ w.i.t.c.h.] [http://yeeden.ifrance.com/img/styles/programmi-computer/ programmi computer ward] [http://broadwaylili.ifrance.com/content/view/john-denver.htm john denver] [http://oiyaoi.ifrance.com/images/small/wanderboy/ wanderboy] [http://oiyaoi.ifrance.com/images/small/vxa/ vxa-2 80 160] [http://yeeden.ifrance.com/img/styles/fliperama/ fliperama] [http://voltia.ifrance.com/content/view/canzoni-italiana.htm canzoni italiana karaoke] [http://singaporepets.ifrance.com/library/html/malteam.htm malteam] [http://lordsander.ifrance.com/topic/regolamento-tombole.htm regolamento tombole] [http://lordsander.ifrance.com/topic/cirrus.htm cirrus] [http://voltia.ifrance.com/content/view/tv.htm tv 30] [http://oiyaoi.ifrance.com/images/small/drava/ drava] [http://demurediablo.ifrance.com/library/html/agenzia-immobiliare/ agenzia immobiliare como] [http://deviantrus.ifrance.com/topic/lexar-jumpdrive/ lexar jumpdrive sport] [http://voltia.ifrance.com/content/view/bosica.htm bosica] [http://demurediablo.ifrance.com/library/html/viacsess-key/ viacsess key] [http://yeeden.ifrance.com/img/styles/chrisler-it/ chrisler it] [http://highbulp.ifrance.com/images/small/lavinio-i/ lavinio i numeri] [http://lovereceier.ifrance.com/lib/singolidotati.htm singoli.dotati] [http://voltia.ifrance.com/content/view/gommoni.htm gommoni] [http://voltia.ifrance.com/content/view/direttiva-europea.htm direttiva europea 2002 96] [http://jdawsona.ifrance.com/data/ragazzo-lourdes/ ragazzo lourdes] [http://voltia.ifrance.com/content/view/idioteque.htm idioteque] [http://broadwaylili.ifrance.com/content/view/arjona-amor.htm arjona amor de tele] [http://lovereceier.ifrance.com/lib/chat-senza.htm chat senza registrazione] [http://voltia.ifrance.com/content/view/supermen-di.htm supermen di molinaro] [http://igaros.ifrance.com/lib/barcellona-palma/ barcellona palma] [http://igaros.ifrance.com/lib/hutland/ hutland] [http://kalian42.ifrance.com/text/directory/mistica-ebraica/ mistica ebraica] [http://tizolaa.ifrance.com/web/t-black/ t630 black] [http://noxuhax.ifrance.com/content/view/enermax-blue.htm enermax blue viper cs-718] [http://speedofsoun.ifrance.com/text/directory/alfa-.htm alfa 147 2 serie] [http://yeeden.ifrance.com/img/styles/camera-parigi/ camera parigi] [http://lovereceier.ifrance.com/lib/donna-bellissime.htm donna bellissime] [http://jdawsona.ifrance.com/data/lucia-tovar/ lucia tovar] [http://lovereceier.ifrance.com/lib/daniela-fazzolari.htm daniela fazzolari] [http://lovereceier.ifrance.com/lib/enermax-alimentatore.htm enermax alimentatore] [http://igaros.ifrance.com/lib/maturita-i/ maturita 2i prova scientifico] [http://highbulp.ifrance.com/images/small/basket-lecco/ basket lecco] [http://jdawsona.ifrance.com/data/he-comprendido/ he comprendido que te amo] [http://voltia.ifrance.com/content/view/neonati-denti.htm neonati denti] [http://noxuhax.ifrance.com/content/view/culle-per.htm culle per campeggio] [http://noxuhax.ifrance.com/content/view/sony-pcm.htm sony pcm] [http://voltia.ifrance.com/content/view/giochi-da.htm giochi da cliccare] [http://kalian42.ifrance.com/text/directory/davide/ davide] [http://yeeden.ifrance.com/img/styles/sardegna-residence/ sardegna residence] [http://kalian42.ifrance.com/text/directory/testo-auschwitz/ testo auschwitz] [http://deviantrus.ifrance.com/topic/codici-sblocco/ codici sblocco lgu8120] [http://lovereceier.ifrance.com/lib/corso-per.htm corso per licenza negozio abbigliamento per svilup] [http://singaporepets.ifrance.com/library/html/vino-abruzzesi.htm vino abruzzesi] [http://toofarfrommaybe.ifrance.com/view/new/km-bmw/ km0 bmw x5 d auto km 0] [http://jdawsona.ifrance.com/data/magix-music/ magix music studio 2005 deluxe] [http://kalian42.ifrance.com/text/directory/sven-watt/ sven watt] [http://jdawsona.ifrance.com/data/escuz/ escuz] [http://toofarfrommaybe.ifrance.com/view/new/garmin-forerunner/ garmin forerunner 201] [http://yeeden.ifrance.com/img/styles/batterie-canon/ batterie canon bp-508] [http://lordsander.ifrance.com/topic/kurume.htm kurume] [http://toofarfrommaybe.ifrance.com/view/new/prezzo-orologio/ prezzo orologio panerai] [http://tizolaa.ifrance.com/web/fandango-night/ fandango night] [http://kalian42.ifrance.com/text/directory/nuevas-normas/ nuevas normas de trafico] [http://demurediablo.ifrance.com/library/html/harfleur/ harfleur] [http://demurediablo.ifrance.com/library/html/hilltop-hoods/ hilltop hoods] [http://lordsander.ifrance.com/topic/progress.htm progress] [http://speedofsoun.ifrance.com/text/directory/passat.htm passat 130] [http://speedofsoun.ifrance.com/text/directory/car-navigator.htm car navigator] [http://voltia.ifrance.com/content/view/www-petfinder.htm www petfinder com] [http://deviantrus.ifrance.com/topic/suonerie-philips/ suonerie philips 630] [http://broadwaylili.ifrance.com/content/view/fatman-scoop.htm fatman scoop be faithful] [http://akmokanzen.ifrance.com/images/small/sanja.htm sanja] [http://yeeden.ifrance.com/img/styles/jbl-creature/ jbl creature ii black] [http://tizolaa.ifrance.com/web/cartoline-da/ cartoline da spedire] [http://kalian42.ifrance.com/text/directory/indesit-wixl/ indesit wixl] [http://lovereceier.ifrance.com/lib/moby-line.htm moby line sardegna] [http://deviantrus.ifrance.com/topic/www-caturano/ www caturano it] [http://toofarfrommaybe.ifrance.com/view/new/kerry-dyer/ kerry dyer] [http://girlwho-is.ifrance.com/img/styles/ds-online.htm ds online] [http://tat-ooin.ifrance.com/resources/articles/cartoline-gratis.htm cartoline gratis animate dei diddl] [http://lovereceier.ifrance.com/lib/nuova-bmw.htm nuova bmw 530d diesel auto nuove] [http://lovereceier.ifrance.com/lib/megamix.htm megamix 2004] [http://toofarfrommaybe.ifrance.com/view/new/una-giornata/ una giornata senza pretese] [http://broadwaylili.ifrance.com/content/view/kep-sony.htm kep sony] [http://tizolaa.ifrance.com/web/palm-zire/ palm zire31 gps bundle] [http://highbulp.ifrance.com/images/small/fiera-di/ fiera di capo d orlando] [http://toofarfrommaybe.ifrance.com/view/new/copertina/ copertina 1113] [http://voltia.ifrance.com/content/view/aquos.htm aquos 32] [http://voltia.ifrance.com/content/view/burkhard-g.htm burkhard g] [http://broadwaylili.ifrance.com/content/view/frigo-no.htm frigo no frost] [http://lovereceier.ifrance.com/lib/tg-comm.htm tg comm it] [http://highbulp.ifrance.com/images/small/chat-roma/ chat roma] [http://tizolaa.ifrance.com/web/tose-proeski/ tose proeski i ana] [http://deviantrus.ifrance.com/topic/leccare-culo/ leccare culo] [http://oiyaoi.ifrance.com/images/small/centrino/ centrino1 4] [http://lovereceier.ifrance.com/lib/mirano.htm mirano] [http://akmokanzen.ifrance.com/images/small/lettori-memory.htm lettori memory card firewire] [http://oiyaoi.ifrance.com/images/small/dante-alighieri/ dante alighieri paolo e francesca] [http://oiyaoi.ifrance.com/images/small/dido-video/ dido video download] [http://noxuhax.ifrance.com/content/view/cartella-con.htm cartella con cerniera] [http://tizolaa.ifrance.com/web/calzature-donna/ calzature donna da sera] [http://akmokanzen.ifrance.com/images/small/televisore-panasonic.htm televisore panasonic 29] [http://yeeden.ifrance.com/img/styles/video-hoobstank/ video hoobstank] [http://lordsander.ifrance.com/topic/universita-arezzo.htm universita arezzo] [http://kalian42.ifrance.com/text/directory/new-key/ new key arabesque] [http://highbulp.ifrance.com/images/small/cabo/ cabo] [http://akmokanzen.ifrance.com/images/small/il-muro.htm il muro degli israeliani] [http://highbulp.ifrance.com/images/small/www-mmm/ www mmm100 com] [http://voltia.ifrance.com/content/view/minidv-grdex.htm minidv gr-d270ex] [http://oiyaoi.ifrance.com/images/small/ebey/ ebey] [http://demurediablo.ifrance.com/library/html/nonno-fuking/ nonno fuking] [http://noxuhax.ifrance.com/content/view/i-ragazzi.htm i ragazzi duri non ballano] [http://jdawsona.ifrance.com/data/decapitazione-ostaggi/ decapitazione ostaggi] [http://demurediablo.ifrance.com/library/html/batteria-samsung/ batteria samsung a800] [http://tizolaa.ifrance.com/web/il-burger/ il burger sul parcheggio] [http://demurediablo.ifrance.com/library/html/zemanova-free/ zemanova free sexy video] [http://oiyaoi.ifrance.com/images/small/zoppi-massimo/ zoppi massimo sentenze] [http://yeeden.ifrance.com/img/styles/alcio/ alcio] [http://yeeden.ifrance.com/img/styles/the-carpenter/ the carpenter and his clumsy wife] [http://lovereceier.ifrance.com/lib/vibrate.htm vibrate] [http://singaporepets.ifrance.com/library/html/jvc-pdb.htm jvc pd-42b50] [http://singaporepets.ifrance.com/library/html/cani-ultrasuoni.htm cani ultrasuoni] [http://deviantrus.ifrance.com/topic/lutricia/ lutricia] [http://speedofsoun.ifrance.com/text/directory/bagnoreggio.htm bagnoreggio] [http://demurediablo.ifrance.com/library/html/convertitore-wma/ convertitore wma mp3] [http://demurediablo.ifrance.com/library/html/codici-liberty/ codici liberty city gta] [http://igaros.ifrance.com/lib/ceca-pazi/ ceca pazi skim spavas] [http://speedofsoun.ifrance.com/text/directory/www-welfare.htm www welfare gov] [http://tat-ooin.ifrance.com/resources/articles/allenamento-portieri.htm allenamento portieri] [http://yeeden.ifrance.com/img/styles/pad-originale/ pad originale playstation] [http://tizolaa.ifrance.com/web/esami-di/ esami di stato prove] [http://voltia.ifrance.com/content/view/natasha-st.htm natasha st pier mourir demain] [http://igaros.ifrance.com/lib/monitor-lcd/ monitor lcd 21 pollici] [http://igaros.ifrance.com/lib/cos-e/ cos e la visura catastale] [http://demurediablo.ifrance.com/library/html/sagre-in/ sagre in piemonte] [http://highbulp.ifrance.com/images/small/re-centro/ re (centro della val vigezzo)] [http://akmokanzen.ifrance.com/images/small/due-amici.htm due amici] [http://tizolaa.ifrance.com/web/hotel-san/ hotel san marco venezia] [http://demurediablo.ifrance.com/library/html/lista-nozze/ lista nozze] [http://girlwho-is.ifrance.com/img/styles/www-mineralogy.htm www mineralogy com] [http://oiyaoi.ifrance.com/images/small/ricetrasmettitore-veicolare/ ricetrasmettitore veicolare] [http://yeeden.ifrance.com/img/styles/giochi-vecchio/ giochi vecchio] [http://demurediablo.ifrance.com/library/html/betrayed-/ betrayed - tradita] [http://lovereceier.ifrance.com/lib/fornello-gas.htm fornello gas metano] [http://jdawsona.ifrance.com/data/a-o/ a o l com] [http://demurediablo.ifrance.com/library/html/titoli-canzoni/ titoli canzoni hit mania dance 2004] [http://lovereceier.ifrance.com/lib/cruzeiro.htm cruzeiro] [http://jdawsona.ifrance.com/data/sway-accordi/ sway accordi] [http://kalian42.ifrance.com/text/directory/libro-fantascienza/ libro fantascienza] [http://igaros.ifrance.com/lib/crossover-/ crossover 2 vie] [http://lordsander.ifrance.com/topic/yamaha-r.htm yamaha r1 moto] [http://tat-ooin.ifrance.com/resources/articles/hotel-calkifornia.htm hotel calkifornia] [http://igaros.ifrance.com/lib/mp-muvo/ mp3 muvo n200 512mb] [http://noxuhax.ifrance.com/content/view/tv-color.htm tv color jvc] [http://yeeden.ifrance.com/img/styles/eva-gonzalez/ eva gonzalez] [http://speedofsoun.ifrance.com/text/directory/beans-and.htm beans and beef] [http://yeeden.ifrance.com/img/styles/nikos-kourkoulis/ nikos kourkoulis] [http://demurediablo.ifrance.com/library/html/set-me/ set me free] [http://jdawsona.ifrance.com/data/condizionatori-mq/ condizionatori mq] [http://akmokanzen.ifrance.com/images/small/tufini.htm tufini] [http://oiyaoi.ifrance.com/images/small/la-comunicazione/ la comunicazione il linguaggio comunica] [http://igaros.ifrance.com/lib/hollywood-detective/ hollywood detective] [http://deviantrus.ifrance.com/topic/asus-anxvm/ asus a7n8x-vm] [http://lovereceier.ifrance.com/lib/foto-heather.htm foto heather loker] [http://girlwho-is.ifrance.com/img/styles/voce-e.htm voce e demais] [http://voltia.ifrance.com/content/view/joensuu.htm joensuu] [http://kalian42.ifrance.com/text/directory/free-sms/ free sms ialia] [http://oiyaoi.ifrance.com/images/small/monitor-lcd/ monitor lcd multimediale samsung] [http://jdawsona.ifrance.com/data/www-liga/ www liga com] [http://highbulp.ifrance.com/images/small/armani-marco/ armani marco] [http://igaros.ifrance.com/lib/licenze-xp/ licenze xp pro] [http://yeeden.ifrance.com/img/styles/sor-sudio/ sor sudio n 9] [http://highbulp.ifrance.com/images/small/giornale-il/ giornale il resto del carlino] [http://igaros.ifrance.com/lib/frasi-carine/ frasi carine sms] [http://jdawsona.ifrance.com/data/camera-da/ camera da bimbi] [http://singaporepets.ifrance.com/library/html/gigi-d.htm gigi d alessio basi musicali mp3] [http://jdawsona.ifrance.com/data/software-patente/ software patente b] [http://igaros.ifrance.com/lib/sungsuong-net/ sungsuong net] [http://voltia.ifrance.com/content/view/barbeq.htm barbeq] [http://speedofsoun.ifrance.com/text/directory/na-canzuncella.htm na canzuncella doce doce] [http://noxuhax.ifrance.com/content/view/traforo-tenda.htm traforo tenda] [http://noxuhax.ifrance.com/content/view/www-vascorossi.htm www vascorossi it] [http://demurediablo.ifrance.com/library/html/finanziamento-benevento/ finanziamento benevento] [http://jdawsona.ifrance.com/data/have-you/ have you ever seen the rain] [http://girlwho-is.ifrance.com/img/styles/litfiba-tour.htm litfiba tour] [http://highbulp.ifrance.com/images/small/hd-/ hd 80 gb mac] [http://demurediablo.ifrance.com/library/html/cyfra-hex/ cyfra hex keys] [http://noxuhax.ifrance.com/content/view/piatti-vasi.htm piatti vasi vetro industrie] [http://lovereceier.ifrance.com/lib/culetto.htm culetto] [http://girlwho-is.ifrance.com/img/styles/h-game.htm h game] [http://yeeden.ifrance.com/img/styles/daitarn/ daitarn] [http://akmokanzen.ifrance.com/images/small/rooms.htm rooms] [http://kalian42.ifrance.com/text/directory/samsung-zoom/ samsung zoom 20x] {{task}}


In this task, the goal is to solve the Towers of Hanoi problem with recursivity.
In this task, the goal is to solve the Towers of Hanoi problem with recursivity.
Line 13: Line 13:
if Ndisks > 0 then
if Ndisks > 0 then
Hanoi(Ndisks - 1, Start_Peg, Via_Peg, End_Peg);
Hanoi(Ndisks - 1, Start_Peg, Via_Peg, End_Peg);
Put_Line("Move disk"
Put_Line("Move disk" & Natural'Image(Ndisks) & " from " & Pegs'Image(Start_Peg) & " to " &
Pegs'Image(End_Peg));
Hanoi(Ndisks - 1, Via_Peg, End_Peg, Start_Peg);
end if;
end Hanoi;
begin
Hanoi(4);
end Towers;


==[[AppleScript]]==
[[Category:AppleScript]]
global moves --this is so the handler 'hanoi' can see the 'moves' variable
set moves to ""
hanoi(4, "peg A", "peg C", "peg B")
on hanoi(ndisks, fromPeg, toPeg, withPeg)
if ndisks is greater than 0 then
hanoi(ndisks - 1, fromPeg, withPeg, toPeg)
set moves to moves & "Move disk " & ndisks & " from " & fromPeg & " to " & toPeg & return
hanoi(ndisks - 1, withPeg, toPeg, fromPeg)
end if
return moves
end hanoi


==[[C plus plus|C++]]==
[[Category:C plus plus]]
'''Compiler:''' [[GCC]]

void move(int n, int from, int to, int via) {
if (n == 1) {
std::cout << "Move disk from pole " << from << " to pole " << to << std::endl;
} else {
move(n - 1, from, via, to);
move(1, from, to, via);
move(n - 1, via, to, from);
}
}



==[[E]]==
[[Category:E]]

def move(out, n, fromPeg, toPeg, viaPeg) {
if (n.aboveZero()) {
move(out, n.previous(), fromPeg, viaPeg, toPeg)
out.println(`Move disk $n from $fromPeg to $toPeg.`)
move(out, n.previous(), viaPeg, toPeg, fromPeg)
}
}
move(stdout, 4, def left {}, def right {}, def middle {})

==[[Forth]]==
[[Category:Forth]]
With locals:

CREATE peg1 ," left "
CREATE peg2 ," middle "
CREATE peg3 ," right "
: .$ COUNT TYPE ;
: MOVE-DISK
LOCALS| via to from n |
n 1 =
IF CR ." Move disk from " from .$ ." to " to .$
ELSE n 1- from via to RECURSE
1 from to via RECURSE
n 1- via to from RECURSE
THEN ;

Without locals, executable pegs:

: left ." left" ;
: right ." right" ;
: middle ." middle" ;
: print ( t f -- )
CR ." Move disk from " execute ." to " execute ;
: move-disk ( v t f n -- v t f )
dup 1 = if drop 2dup print exit then
1- >R
rot swap R@ ( t v f n-1 ) recurse
rot swap 2dup print
swap rot R> ( f t v n-1 ) recurse
swap rot ;
: hanoi ( n -- )
1 max >R ['] right ['] middle ['] left R> move-disk drop drop drop ;

==[[Java]]==
[[Category:Java]]

public void move(int n, int from, int to, int via) {
if (n == 1) {
System.out.println("Move disk from pole " + from + " to pole " + to);
} else {
move(n - 1, from, via, to);
move(1, from, to, via);
move(n - 1, via, to, from);
}
}

==[[Perl]]==
[[Category:Perl]]
sub move {
my $n = shift;
my $from = shift;
my $to = shift;
my $via = shift;
if ($n == 1) {
print "Move disk from pole $from to pole $to.\n";
} else {
move($n - 1, $from, $via, $to);
move(1, $from, $to, $via);
move($n - 1, $via, $to, $from);
};
};

==[[Pop11]]==
[[Category:Pop11]]

define hanoi(n, src, dst, via);
if n > 0 then
hanoi(n - 1, src, via, dst);
printf('Move disk ' >< n >< ' from ' >< src >< ' to ' >< dst >< '.\n');
hanoi(n - 1, via, dst, src);
endif;
enddefine;

hanoi(4, "left", "middle", "right");

==[[Python]]==
[[Category:Python]]

<pre>
def hanoi(ndisks, startPeg=1, endPeg=3):
if ndisks:
hanoi(ndisks-1, startPeg, 6-startPeg-endPeg)
print "Move disk %d from peg %d to peg %d" % (ndisks, startPeg, endPeg)
hanoi(ndisks-1, 6-startPeg-endPeg, endPeg)

hanoi(ndisks=4)
</pre>

==[[Seed7]]==
[[Category:Seed7]]

const proc: hanoi (in integer: disk, in string: source, in string: dest, in string: via) is func
begin
if disk > 0 then
hanoi(pred(disk), source, via, dest);
writeln("Move disk " <& disk <& " from " <& source <& " to " <& dest);
hanoi(pred(disk), via, dest, source);
end if;
end func;

==[[Toka]]==
[[Category:Toka]]

value| sa sb sc n |
[ to sc to sb to sa to n ] is vars!
[ ( num from to via -- )
vars!
n 0 <>
[
n sa sb sc
n 1- sa sc sb recurse
vars!
." Move a ring from " sa . ." to " sb . cr
n 1- sc sb sa recurse
] ifTrue
] is hanoi

Revision as of 20:35, 19 August 2007

Task
Towers of Hanoi
You are encouraged to solve this task according to the task description, using any language you may know.

In this task, the goal is to solve the Towers of Hanoi problem with recursivity.

Ada

with Ada.Text_Io; use Ada.Text_Io;

procedure Towers is
   type Pegs is (Left, Center, Right);
   procedure Hanoi (Ndisks : Natural; Start_Peg : Pegs := Left; Via_Peg : Pegs := Center; End_Peg : Pegs := Right) is
   begin
      if Ndisks > 0 then
         Hanoi(Ndisks - 1, Start_Peg, Via_Peg, End_Peg);
         Put_Line("Move disk" & Natural'Image(Ndisks) & " from " & Pegs'Image(Start_Peg) & " to " &
            Pegs'Image(End_Peg));
         Hanoi(Ndisks - 1, Via_Peg, End_Peg, Start_Peg);
      end if;
   end Hanoi;
begin
   Hanoi(4);
end Towers;


AppleScript

global moves --this is so the handler 'hanoi' can see the 'moves' variable
set moves to ""
hanoi(4, "peg A", "peg C", "peg B")

on hanoi(ndisks, fromPeg, toPeg, withPeg)
    if ndisks is greater than 0 then
        hanoi(ndisks - 1, fromPeg, withPeg, toPeg)
        set moves to moves & "Move disk " & ndisks & " from " & fromPeg & " to " & toPeg & return
        hanoi(ndisks - 1, withPeg, toPeg, fromPeg)
    end if
    return moves
end hanoi


C++

Compiler: GCC

void move(int n, int from, int to, int via) {
  if (n == 1) {
    std::cout << "Move disk from pole " << from << " to pole " << to << std::endl;
  } else {
    move(n - 1, from, via, to);
    move(1, from, to, via);
    move(n - 1, via, to, from);
  }
}


E

def move(out, n, fromPeg, toPeg, viaPeg) {
    if (n.aboveZero()) {
        move(out, n.previous(), fromPeg, viaPeg, toPeg)
        out.println(`Move disk $n from $fromPeg to $toPeg.`)
        move(out, n.previous(), viaPeg, toPeg, fromPeg)
    }
}

move(stdout, 4, def left {}, def right {}, def middle {})

Forth

With locals:

CREATE peg1 ," left "   
CREATE peg2 ," middle " 
CREATE peg3 ," right " 

: .$   COUNT TYPE ;
: MOVE-DISK 
  LOCALS| via to from n | 
  n 1 =
  IF   CR ." Move disk from " from .$ ." to " to .$ 
  ELSE n 1- from via to RECURSE 
       1    from to via RECURSE 
       n 1- via to from RECURSE 
  THEN ;

Without locals, executable pegs:

: left   ." left" ;
: right  ." right" ;
: middle ." middle" ;

: print ( t f -- )
  CR ." Move disk from " execute ."  to " execute  ;
: move-disk ( v t f n -- v t f )
  dup 1 = if drop 2dup print exit then
  1-       >R
  rot swap R@ ( t v f n-1 ) recurse
  rot swap        2dup print
  swap rot R> ( f t v n-1 ) recurse
  swap rot ;
: hanoi ( n -- )
  1 max >R ['] right ['] middle ['] left R> move-disk drop drop drop ;

Java

 public void move(int n, int from, int to, int via) {
   if (n == 1) {
     System.out.println("Move disk from pole " + from + " to pole " + to);
   } else {
     move(n - 1, from, via, to);
     move(1, from, to, via);
     move(n - 1, via, to, from);
   }
 }

Perl

sub move {
    my $n    = shift;
    my $from = shift;
    my $to   = shift;
    my $via  = shift;

    if ($n == 1) {
        print "Move disk from pole $from to pole $to.\n";
    } else {
        move($n - 1, $from, $via, $to);
        move(1, $from, $to, $via);
        move($n - 1, $via, $to, $from);
    };
};

Pop11

define hanoi(n, src, dst, via);
if n > 0 then
    hanoi(n - 1, src, via, dst);
    printf('Move disk ' >< n >< ' from ' >< src >< ' to ' >< dst >< '.\n');
    hanoi(n - 1, via, dst, src);
endif;
enddefine;
hanoi(4, "left", "middle", "right");

Python

def hanoi(ndisks, startPeg=1, endPeg=3):
    if ndisks:
        hanoi(ndisks-1, startPeg, 6-startPeg-endPeg)
        print "Move disk %d from peg %d to peg %d" % (ndisks, startPeg, endPeg)
        hanoi(ndisks-1, 6-startPeg-endPeg, endPeg)

hanoi(ndisks=4)

Seed7

const proc: hanoi (in integer: disk, in string: source, in string: dest, in string: via) is func
  begin
    if disk > 0 then
      hanoi(pred(disk), source, via, dest);
      writeln("Move disk " <& disk <& " from " <& source <& " to " <& dest);
      hanoi(pred(disk), via, dest, source);
    end if;
  end func;

Toka

value| sa sb sc n |
[ to sc to sb to sa to n ] is vars!
[ ( num from to via -- )
  vars!
  n 0 <>
  [
    n sa sb sc 
    n 1- sa sc sb recurse
    vars!
    ." Move a ring from " sa . ." to " sb . cr
    n 1- sc sb sa recurse
  ] ifTrue
] is hanoi