| |
|
|
p.specht
| Wußtet Ihr, daß el 'Türme de Hanoi' eigentlich de Frankreich stammen?
Título de la ventana upper$("Türme de Hanoi, rekursiv")
Ventana de Estilo 24:Ventana 0,0-%maxx,240:randomize:font 2
imprimir "\n Referencia: Sind n Scheiben en 3 Pfosten vorgegeben, así braucht uno mindestens 2^n-1 Schritte."
imprimir "\n Das Problema es en dieser Aufbereitung beliebt, en el Diferencia zwischen uno "
imprimir " rekursiven Darstellung [(x(1)=1 y x(n+1)=2*x(n)+1] y expliziter Darstellung [x(n)=2^n-1]"
imprimir " uno Folge a demonstrieren."
waitinput 5000
Imprimir "\n A Geschichte el Problemstellung:\n"
Imprimir " Der französische Mathematiker Édouard Lucas (1842-1891) erfand dieses Spiel "
Imprimir " y verkaufte lo como Spielzeug erstmals en el Jahre 1883. Dazu pensamiento se Lucas "
imprimir " una Geschichte de: Hindupriester debería en Geheiß ihres Gottes Brahma "
imprimir " 64 Scheiben umlegen. Dazu benötigten ellos theoretisch mindestens 2^64-1 = "
imprimir " 1.8*10 ^19 Züge. Wird en cada Sekunde una Scheibe umgelegt, así dauert el "
imprimir " 580 Milliarden Jahre. Das Weltall es actualmente 13,48 Mrd Jahre alt y se "
imprimir " el beschleunigten Expansionstod (Atome zerreissen kausal) vermutlich en ca."
imprimir " 48 Mrd Jahren erleiden. Nehmen wir also tal vez algo weniger Scheiben...\n"
waitinput 5000
imprimir " \n Un nonrekursive Algorithmus-Variante scheint *para Menschen* überraschend simplemente:\n"
imprimir " Solange el Turm no vollständig bewegt wurde: "
imprimir " - bewege el kleinste Scheibe una Platz modulo 3 después de rechts *)"
imprimir " - führe el einzig mögliche Bewegung uno no-kleinsten Scheibe de.\n____\n"
imprimir " *): Scheibenzahl ungerade? Ersetze 'rechts' por 'links' \n"
imprimir "\n Hier folgt aber una rekursive Variante, en así XProfan auszutesten."
declarar n&,m&
imprimir "\n\n\n Gewünschte Scheibenzahl ?:",:input n&
Título de la ventana " TASTE Q para SCHNELL-LAUF DRÜCKEN "
cls
declarar h&[3,n&],v&[3],z&
whileloop n& : h&[1,&Loop]=n&+1-&Loop : endwhile :
v&[1]=n&
m&=n&
show 1,2
waitinput 1000
hanoi(n&,1,2,3)
beep
waitinput
end
proc hanoi :parámetros n&,von&,nach&,ueber&
if n&=1
move(von&,nach&)
elseif n&>1
hanoi(n&-1,von&,ueber&,nach&)
move(von&,nach&)
hanoi(n&-1,ueber&,nach&,von&)
endif
ENDPROC
proc move :parámetros 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&
caso %key<>113:waitinput 1000
ENDPROC
proc Show :parámetros von&,nach&
locate 1,1
inc z&
imprimir " ";z&;":",von&;">";nach&;" "
imprimir "------------------------"
caso %key<>113:waitinput 1000
declarar v&,w&
whileloop 1,3:v&=&Loop
imprimir " ";v&;": ",
whileloop 1,m&
w&=&Loop
if h&[v&,w&]>0:imprimir h&[v&,w&],
más :imprimir ".",
endif
endwhile
imprimir
endwhile
imprimir "------------------------"
ENDPROC
|
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 16.05.2021 ▲ |
|
|
|