Towers of Hanoi: Difference between revisions

From Rosetta Code
Content added Content deleted
mNo edit summary
(revert spam)
Line 1: Line 1:
{{task}}
[http://competitio.ifrance.com/the-heart/ the heart of every girl] [http://furrysoap.ifrance.com/lolloscan-sexy/ lolloscan sexy girl] [http://furrysoap.ifrance.com/calendari-donne/ calendari donne] [http://doctorpinkerton.ifrance.com/lib/sex-crimes/ sex crimes] [http://mi-kkiechang.ifrance.com/dilatazione-anale.html dilatazione anale] [http://tulip123456.ifrance.com/topic/videogiochi-hentai.html videogiochi hentai gratis] [http://elixirium.ifrance.com/lib/max-de.html max de angelis nuda testo] [http://doctorpinkerton.ifrance.com/lib/sex-women/ sex women excellent] [http://furrysoap.ifrance.com/giorgia-palmas/ giorgia palmas porno] [http://elixirium.ifrance.com/lib/filmati-simpatici.html filmati simpatici gratis] [http://cincydj.ifrance.com/images/small/www-sexe/ www sexe fr] [http://adrienneee.ifrance.com/blog/bunny-hentay/ bunny hentay] [http://competitio.ifrance.com/filme-porno/ filme porno xuxa] [http://elixirium.ifrance.com/lib/bretney-nuda.html bretney nuda] [http://end14april.ifrance.com/blog/gay-eros.html gay eros] [http://adrienneee.ifrance.com/blog/concorso-di/ concorso di mister gay d italia] [http://end14april.ifrance.com/blog/freexxx.html freexxx] [http://competitio.ifrance.com/sexi-video/ sexi video chat] [http://spirit-psyki.ifrance.com/lib/foto-sulla.html foto sulla canalis] [http://spirit-psyki.ifrance.com/lib/remix-eros.html remix eros] [http://spirit-psyki.ifrance.com/lib/malaguena-salerosa.html malaguena salerosa] [http://tulip123456.ifrance.com/topic/empoli-porno.html empoli porno] [http://competitio.ifrance.com/lezioni-porno/ lezioni porno] [http://tulip123456.ifrance.com/topic/san-martino.html san martino analisi testuale] [http://furrysoap.ifrance.com/singoli-donne/ singoli donne] [http://doctorpinkerton.ifrance.com/lib/comics-sex/ comics sex] [http://bakadeshi.ifrance.com/img/styles/kamikaze-girls.html kamikaze girls] [http://tulip123456.ifrance.com/topic/filmati-sesso.html filmati sesso lesbiche] [http://jnk713.ifrance.com/img/styles/mp-gratis/ mp3 gratis de mago de oz] [http://mi-kkiechang.ifrance.com/arcuri-sex.html arcuri sex] [http://end14april.ifrance.com/blog/sesso-a.html sesso a posizione] [http://end14april.ifrance.com/blog/sim-girl.html sim girl gioco] [http://mi-kkiechang.ifrance.com/annuncio-ragazze.html annuncio ragazze] [http://competitio.ifrance.com/eva-henger/ eva henger porno star] [http://competitio.ifrance.com/ebony-fuck/ ebony fuck] [http://elixirium.ifrance.com/lib/winx-clab.html winx clab xxx] [http://cincydj.ifrance.com/images/small/siti-amatoriali/ siti amatoriali gay] [http://elixirium.ifrance.com/lib/porno-tra.html porno tra] [http://elixirium.ifrance.com/lib/cd-eros.html cd eros ramazzotti] [http://cincydj.ifrance.com/images/small/video-hard/ video hard gratis di sung hi lee] [http://doctorpinkerton.ifrance.com/lib/racconti-di/ racconti di gay] [http://furrysoap.ifrance.com/canalis-corvaglia/ canalis corvaglia] [http://elixirium.ifrance.com/lib/gay-dotato.html gay dotato] [http://adrienneee.ifrance.com/blog/fuck-hot/ fuck hot gril] [http://furrysoap.ifrance.com/sex-images/ sex images] [http://bakadeshi.ifrance.com/img/styles/tennis-topless.html tennis topless] [http://adrienneee.ifrance.com/blog/pam-e/ pam e tommy sexi video] [http://tulip123456.ifrance.com/topic/fuck-it.html fuck it testo di canzone] [http://mi-kkiechang.ifrance.com/giochi-flash.html giochi flash tutto gratis] [http://mi-kkiechang.ifrance.com/viagra-x.html viagra x donne] [http://adrienneee.ifrance.com/blog/modem-interno/ modem interno analogico] [http://doctorpinkerton.ifrance.com/lib/donne-muscolose/ donne muscolose foto] [http://competitio.ifrance.com/la-preda/ la preda nuda] [http://mi-kkiechang.ifrance.com/foto-licia.html foto licia colo nuda] [http://competitio.ifrance.com/http-www/ http www sesso orale it] [http://competitio.ifrance.com/celebrita-nuda/ celebrita nuda gratis] [http://adrienneee.ifrance.com/blog/dodici-donne/ dodici donne] [http://tulip123456.ifrance.com/topic/noticieros.html noticieros] [http://spirit-psyki.ifrance.com/lib/temi-nokia.html temi nokia gratis] [http://spirit-psyki.ifrance.com/lib/porno-sul.html porno sul satellite] [http://mi-kkiechang.ifrance.com/nuda-vendetta.html nuda vendetta] [http://competitio.ifrance.com/donne-indiavolate/ donne indiavolate] [http://competitio.ifrance.com/una-commedia/ una commedia sexy in una notte di mezza estate] [http://adrienneee.ifrance.com/blog/site-arabe/ site arabe sex] [http://elixirium.ifrance.com/lib/sexy-dance.html sexy dance] [http://competitio.ifrance.com/ridolfi-nuda/ ridolfi nuda] [http://adrienneee.ifrance.com/blog/tagli-di/ tagli di capelli per donne] [http://doctorpinkerton.ifrance.com/lib/eva-henger/ eva henger video gratis] [http://tulip123456.ifrance.com/topic/sesso-telefono.html sesso telefono gay] [http://mi-kkiechang.ifrance.com/xxx-black.html xxx black women movie vree] [http://doctorpinkerton.ifrance.com/lib/girl-walpaper/ girl walpaper] [http://cincydj.ifrance.com/images/small/sfondata-anale/ sfondata anale] [http://jnk713.ifrance.com/img/styles/virtual-sex/ virtual sex with jesse jane] [http://cincydj.ifrance.com/images/small/ashlee-simpon/ ashlee simpon nuda] [http://doctorpinkerton.ifrance.com/lib/solo-sesso/ solo sesso gay con animali] [http://end14april.ifrance.com/blog/www-girls.html www girls it] [http://bakadeshi.ifrance.com/img/styles/erotismo-gay.html erotismo gay] [http://doctorpinkerton.ifrance.com/lib/video-porno/ video porno online gratis] [http://jnk713.ifrance.com/img/styles/donne-mature/ donne mature in bagno] [http://elixirium.ifrance.com/lib/hard-porno.html hard porno over 40] [http://competitio.ifrance.com/video-de/ video de menudo] [http://competitio.ifrance.com/benq-m/ benq m300 configurazione gratis] [http://elixirium.ifrance.com/lib/sesso-.html sesso cavallo] [http://elixirium.ifrance.com/lib/super-porno.html super porno] [http://end14april.ifrance.com/blog/leo-dan.html leo dan descargar gratis] [http://cincydj.ifrance.com/images/small/vip-sex/ vip sex] [http://competitio.ifrance.com/ragazze-che/ ragazze che se la toccano] [http://jnk713.ifrance.com/img/styles/amplificatori-/ amplificatori 5 canali] [http://doctorpinkerton.ifrance.com/lib/sesso-genere/ sesso genere animal] [http://competitio.ifrance.com/katie-price/ katie price nuda] [http://mi-kkiechang.ifrance.com/film-porno.html film porno titoli] [http://tulip123456.ifrance.com/topic/pornocity-net.html pornocity net] [http://mi-kkiechang.ifrance.com/telefono-lesbo.html telefono lesbo] [http://doctorpinkerton.ifrance.com/lib/fotos-de/ fotos de emma watson desnuda] [http://bakadeshi.ifrance.com/img/styles/water-nudo.html water nudo] [http://tulip123456.ifrance.com/topic/jenna-jameson.html jenna jameson foto porno] [http://elixirium.ifrance.com/lib/puta-desnuda.html puta desnuda] [http://mi-kkiechang.ifrance.com/desktop-per.html desktop per pc gratis] [http://elixirium.ifrance.com/lib/ragazze-modelle.html ragazze modelle] [http://mi-kkiechang.ifrance.com/foto-sexi.html foto sexi elisabetta canalis] [http://doctorpinkerton.ifrance.com/lib/eamon-fuck/ eamon fuck it traduzione testo] [http://spirit-psyki.ifrance.com/lib/sito-porno.html sito porno gratis] [http://elixirium.ifrance.com/lib/flash-analyse.html flash analyse] [http://elixirium.ifrance.com/lib/modelle-sexy.html modelle sexy] [http://mi-kkiechang.ifrance.com/cartoon-porno.html cartoon porno online gratis] [http://bakadeshi.ifrance.com/img/styles/lista-canali.html lista canali satellitari] [http://competitio.ifrance.com/capua-nuda/ capua nuda] [http://furrysoap.ifrance.com/sexxo-anal/ sexxo anal] [http://jnk713.ifrance.com/img/styles/musica-salsa/ musica salsa gratis puerto rico] [http://elixirium.ifrance.com/lib/sexy-foto.html sexy foto anna falchi] [http://elixirium.ifrance.com/lib/motore-ricerca.html motore ricerca gratis] [http://competitio.ifrance.com/gay-in/ gay in foto artistiche] [http://competitio.ifrance.com/foto-sexi/ foto sexi di duncan e lee dei blue] [http://furrysoap.ifrance.com/fotos-porno/ fotos porno de chibolitas] [http://end14april.ifrance.com/blog/george-clooney.html george clooney] [http://bakadeshi.ifrance.com/img/styles/pamela-anderson.html pamela anderson e tommy lee video] [http://elixirium.ifrance.com/lib/lyon-george.html lyon, george francis] [http://end14april.ifrance.com/blog/video-dirty.html video dirty gratis] [http://cincydj.ifrance.com/images/small/veronica-zeminova/ veronica zeminova] [http://bakadeshi.ifrance.com/img/styles/naked-girl.html naked girl] [http://tulip123456.ifrance.com/topic/pornozoo.html pornozoo] [http://adrienneee.ifrance.com/blog/foto-gratis/ foto gratis lingerie perizoma] [http://furrysoap.ifrance.com/www-sexplus/ www sexplus com] [http://adrienneee.ifrance.com/blog/sfondi-sexi/ sfondi sexi gratis] [http://mi-kkiechang.ifrance.com/porno-motore.html porno motore] [http://jnk713.ifrance.com/img/styles/xxxparadise-com/ xxxparadise com] [http://mi-kkiechang.ifrance.com/grande-fratello.html grande fratello 5 sexy] [http://spirit-psyki.ifrance.com/lib/eros-veneziano.html eros veneziano] [http://end14april.ifrance.com/blog/web-analytics.html web analytics] [http://bakadeshi.ifrance.com/img/styles/gay-nudi.html gay nudi video gratis] [http://elixirium.ifrance.com/lib/renee-zellweger.html renee zellweger nuda] [http://furrysoap.ifrance.com/www-foto/ www foto gratis it] [http://competitio.ifrance.com/sexo-envivo/ sexo envivo] [http://end14april.ifrance.com/blog/fakes-porno.html fakes porno] [http://cincydj.ifrance.com/images/small/giochi-sexy/ giochi sexy flash gratis] [http://spirit-psyki.ifrance.com/lib/dragon-ball.html dragon ball xxx] [http://bakadeshi.ifrance.com/img/styles/nami-nuda.html nami nuda] [http://bakadeshi.ifrance.com/img/styles/sailor-moon.html sailor moon en porno] [http://cincydj.ifrance.com/images/small/sexy-quarantenni/ sexy quarantenni] [http://competitio.ifrance.com/siti-gratis/ siti gratis violenza] [http://elixirium.ifrance.com/lib/nuda-come.html nuda come sei] [http://bakadeshi.ifrance.com/img/styles/paulina-al.html paulina al desnudo] [http://elixirium.ifrance.com/lib/sexysat-tv.html sexysat tv] [http://end14april.ifrance.com/blog/film-erotici.html film erotici d epoca] [http://bakadeshi.ifrance.com/img/styles/free-nudist.html free nudist] [http://mi-kkiechang.ifrance.com/sexi-quarantenni.html sexi quarantenni] [http://elixirium.ifrance.com/lib/foto-ragazzi.html foto ragazzi nudi] [http://end14april.ifrance.com/blog/traduzione-fuck.html traduzione fuck it girl version] [http://furrysoap.ifrance.com/www-porno/ www porno gratis it] [http://doctorpinkerton.ifrance.com/lib/l-alexander/ l alexander nuda per 12 mesi di fuoco] [http://mi-kkiechang.ifrance.com/linda-ranalli.html linda ranalli] [http://doctorpinkerton.ifrance.com/lib/foto-gay/ foto gay maturi] [http://competitio.ifrance.com/donne-a/ donne a pecora] [http://competitio.ifrance.com/porno-gey/ porno gey] [http://bakadeshi.ifrance.com/img/styles/traduzione-di.html traduzione di fuckit] [http://bakadeshi.ifrance.com/img/styles/musica-de.html musica de tango gratis] [http://bakadeshi.ifrance.com/img/styles/deseo-ver.html deseo ver porno] [http://cincydj.ifrance.com/images/small/full-sexy/ full sexy] [http://competitio.ifrance.com/porno-vero/ porno vero] [http://tulip123456.ifrance.com/topic/spartiti-liturgici.html spartiti liturgici gratis] [http://spirit-psyki.ifrance.com/lib/hentai-game.html hentai game] [http://tulip123456.ifrance.com/topic/sesso-con.html sesso con oggetto] [http://jnk713.ifrance.com/img/styles/www-libero/ www libero porno it] [http://doctorpinkerton.ifrance.com/lib/singoli-bisex/ singoli bisex cercano coppie] [http://adrienneee.ifrance.com/blog/sexo-con/ sexo con chicas] [http://elixirium.ifrance.com/lib/tette-e.html tette e fighe] [http://cincydj.ifrance.com/images/small/fuck-it/ fuck it colonna sonora] [http://end14april.ifrance.com/blog/natale-sex.html natale sex] [http://tulip123456.ifrance.com/topic/sex-video.html sex video porno] [http://jnk713.ifrance.com/img/styles/tg-porno/ tg porno] [http://cincydj.ifrance.com/images/small/sexo-fuerte/ sexo fuerte] [http://furrysoap.ifrance.com/george-raft/ george raft] [http://adrienneee.ifrance.com/blog/ragazze-nude/ ragazze nude] [http://bakadeshi.ifrance.com/img/styles/donne-mature.html donne mature sicilia] [http://furrysoap.ifrance.com/in-culo/ in culo transessuali] [http://cincydj.ifrance.com/images/small/tha-girl/ tha girl in the other room cover] [http://tulip123456.ifrance.com/topic/hot-girl.html hot girl] [http://tulip123456.ifrance.com/topic/fotos-transexuales.html fotos transexuales] [http://doctorpinkerton.ifrance.com/lib/casa-playgirl/ casa playgirl] [http://end14april.ifrance.com/blog/la-casa.html la casa delle play girls] [http://competitio.ifrance.com/racconti-erotici/ racconti erotici zie] [http://cincydj.ifrance.com/images/small/paris-hilton/ paris hilton porno video] [http://furrysoap.ifrance.com/sexe/ sexe 24] [http://jnk713.ifrance.com/img/styles/michell-vieth/ michell vieth porno] [http://adrienneee.ifrance.com/blog/eros-videa/ eros videa vecchie] [http://bakadeshi.ifrance.com/img/styles/w-le.html w le donne] [http://bakadeshi.ifrance.com/img/styles/doppio-cazzo.html doppio cazzo nella fica foto gratis] [http://mi-kkiechang.ifrance.com/bellissime-gratis.html bellissime gratis] [http://mi-kkiechang.ifrance.com/vaginal-cream.html vaginal cream pie] [http://bakadeshi.ifrance.com/img/styles/rio-forge.html rio forge mp3] [http://bakadeshi.ifrance.com/img/styles/to-porno.html to porno gratis] [http://competitio.ifrance.com/spartiti-natalizi/ spartiti natalizi gratis] [http://jnk713.ifrance.com/img/styles/la-maja/ la maja desnuda] [http://tulip123456.ifrance.com/topic/le-ragazze.html le ragazze dei quartieri alti] [http://elixirium.ifrance.com/lib/anale-coppie.html anale coppie] [http://mi-kkiechang.ifrance.com/suoneria-gratis.html suoneria gratis polifoniche] [http://mi-kkiechang.ifrance.com/donne-tv.html donne tv nude] [http://tulip123456.ifrance.com/topic/sms-gratis.html sms gratis dal pc] [http://end14april.ifrance.com/blog/corinna-schumacher.html corinna schumacher nuda] [http://jnk713.ifrance.com/img/styles/fuckit-mp/ fuckit mp3] {{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 19:23, 26 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