| |
|
|
p.specht
| Inspiriert vom "Simon-says"-Rätsel de el Film "Stirb langsam", liefert dass nachstehende Programa mögliche Umleer-Abfolgen a Erzielung bestimmter Zielmengen - allerdings no siempre el kürzeste Variante: Dreht uno el beiden Gefäßkapazitäten en, ergeben se oft kürzere Wege para Erfolg.
Referencia: Nur si una el Gefäßkapazitäten una Primzahl es, o beiden Fassungsvermögen "relativ prim" zueinander son (GgT=1), voluntad (en beiden Richtungen) garantiert todos überhaupt möglichen Ergebnisse geliefert.
Damit dejar se auch el sog. Zwei-Sanduhren-Rätsel lösen. Im Programa se entonces ermittelt, cómo el fehlenden Restwert a Tiempo erzeugen kann.
Título de la ventana "Umleer-Rätsel para 2 Behälter lösen"
declarar Ziel&, LMax&,RMax&,L&,R&,n&,kann&,ist&
Beginn:
CLS:Font 2:Imprimir " Ziel = ";:Entrada Ziel&
' Ziel&=2
LMax&=7
RMax&=11
Case Ziel&<0:ziel&=abs(ziel&)
Ziel&=Ziel& mod if(LMax&>RMax&,LMax&,RMax&)
n&=0:L&=0:R&=0
Repeat
'Wenn Ziel erreicht:
if (LMax&=Ziel&) or (RMax&=Ziel&):inc n&:romper:endif
if (L&=Ziel&) or (R&=Ziel&):Zeigen:romper:endif
'Wenn algo como es para transportieren y no Kapazität frei es: Mache frei!
if (L&>0) and (R&=RMax&):R&=0:inc n&: Zeigen :Endif
'Wenn nichts mehr como es para transportieren, schöpfe neu!
if (L&=0):L&=LMax&:inc n&: Zeigen :endif
'Wenn algo como es para transportieren y todavía Kapazität frei es: Leere en!
if (L&>0) and (R&<RMax&): Umleeren :inc n&: Zeigen :Endif
Until (L&=Ziel&) or (R&=Ziel&)
imprimir " ";n&;" Schritte."
Waitinput
Goto "Beginn"
Proc Umleeren
kann&=RMax&-R& : ist&=if(kann&<L&,kann&,L&)
L&=L&-ist& : R&=R&+ist&
ENDPROC
Proc Zeigen
imprimir tab(3);n&;". ";tab(12);L&,tab(20);R&
if %csrlin>20:waitinput 2000:cls:endif
ENDPROC
FIN
|
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 30.05.2021 ▲ |
|
|
|