| |
|
|
p.specht
| Wußtet son, qui qui 'Türme de Hanoi' eigentlich aus la france stammen?
Titre de la fenêtre upper$("Türme de Hanoi, rekursiv")
Fenêtre Style 24:Fenêtre 0,0-%maxx,240:randomize:font 2
imprimer "\n Hinweis: sommes n Scheiben sur 3 Pfosten vorgegeben, so braucht on mindestens 2^n-1 Schritte."
imprimer "\n cela Problem ist dans cette Aufbereitung beliebt, um den Unterschied entre einer "
imprimer " rekursiven représentation [(x(1)=1 et x(n+1)=2*x(n)+1] et expliziter représentation [x(n)=2^n-1]"
imprimer " einer Folge trop manifester."
waitinput 5000
Imprimer "\n Zur Geschichte qui Problemstellung:\n"
Imprimer " qui französische Mathematiker Édouard Lucas (1842-1891) erfand cet Spiel "
Imprimer " et verkaufte es comme Spielzeug erstmals im Jahre 1883. en supplément dachte sich Lucas "
imprimer " une Geschichte aus: Hindupriester devrait sur Geheiß ihres Gottes Brahma "
imprimer " 64 Scheiben umlegen. en supplément nécessaire vous theoretisch mindestens 2^64-1 = "
imprimer " 1.8*10 ^19 Züge. Wird dans chacun seconde une vitre umgelegt, so dauert cela "
imprimer " 580 Milliarden Jahre. cela Weltall ist derzeit 13,48 Mrd Jahre vieux et wird "
imprimer " den beschleunigten Expansionstod (Atome zerreissen causal) probablement dans ca."
imprimer " 48 Mrd Jahren erleiden. prenons alors peut-être quelque chose moins Scheiben...\n"
waitinput 5000
imprimer " \n une nonrekursive Algorithmus-variante scheint *pour les gens* überraschend simple:\n"
imprimer " Solange qui Turm pas vollständig bewegt wurde: "
imprimer " - bewege qui kleinste vitre une place modulo 3 à droite *)"
imprimer " - führe qui seule mögliche Bewegung einer pas-kleinsten vitre aus.\n____\n"
imprimer " *): Scheibenzahl ungerade? Ersetze 'à droite' par 'à gauche' \n"
imprimer "\n ici folgt mais une rekursive variante, um avec cela XProfan auszutesten."
declare n&,m&
imprimer "\n\n\n Gewünschte Scheibenzahl ?:",:input n&
Titre de la fenêtre " TASTE Q pour SCHNELL-LAUF DRÜCKEN "
cls
declare h&[3,n&],v&[3],z&
whileloop n& : h&[1,&Boucle]=n&+1-&Boucle : endwhile :
v&[1]=n&
m&=n&
show 1,2
waitinput 1000
hanoi(n&,1,2,3)
beep
waitinput
end
proc hanoi :parameters n&,von&,nach&,ueber&
si n&=1
déplacer(von&,nach&)
elseif n&>1
hanoi(n&-1,von&,ueber&,nach&)
déplacer(von&,nach&)
hanoi(n&-1,ueber&,nach&,von&)
endif
endproc
proc déplacer :parameters von&,nach&
v&[nach&]=v&[nach&]+1
h&[nach&,v&[nach&]]=h&[von&,v&[von&]]
h&[von&,v&[von&]]=0:v&[von&]=v&[von&]-1
show von&,nach&
cas %clé<>113:waitinput 1000
endproc
proc Show :parameters von&,nach&
locate 1,1
inc z&
imprimer " ";z&;»,von&;">";nach&;" "
imprimer "------------------------"
cas %clé<>113:waitinput 1000
declare v&,w&
whileloop 1,3:v&=&Boucle
imprimer " ";v&;": ",
whileloop 1,m&
w&=&Boucle
si h&[v&,w&]>0:imprimer h&[v&,w&],
d'autre :imprimer ".",
endif
endwhile
imprimer
endwhile
imprimer "------------------------"
endproc
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 16.05.2021 ▲ |
|
|
|