Man sehe für die Motoren Benzintanks vor.
Der Kraftstoff
-
Pro Etappe verbraucht der Motor (auch wenn er nicht läuft!) 13 Liter
(die Anzahl PLOPs, die Winkeldrehung).
-
Ist der Kraftstofftank nahezu leer,
dann werden genau 30 Liter hinzugetankt
(die Anzahl Etappen, der größte Winkel).
Die Überlegung
Pro Etappe verbraucht er 13 Liter, über 30 Etappen: 30 * 13 Liter.
30 * 13 = 13 * 30.
Wie oft wird er tanken müssen?
Richtig, 13-mal. Und wie viele Schritte sollten es noch gleich sein? ...
Und hier die Lösung:
Wenn in einer Etappe nichts mehr im Tank ist, wird getankt und gePLOPt.
Die übrigen (17) Etappen sind PILI.
Nun lasse man den Benzintank beiseite und merke sich den Gedankengang,
denn der wird im folgenden Code verwendet.
Der Forth-Code
Forth file: gc207.frt
\ ROBOTER-ARM
MARKER -ARM FORTH DEFINITIONS DECIMAL
: VARIABLES ( n - ) CREATE CELLS ALLOT
DOES> ( index body - adresse ) SWAP CELLS + ;
5 DUP CONSTANT #MOTOREN
DUP VARIABLES HIER \ Liste der Motorstellungen
DUP VARIABLES DORT \ Liste der Zielstellungen
DUP VARIABLES SCHRITT \ -1 oder +1 (Richtungen)
DUP VARIABLES TANK \ Kraftstoffmenge
DUP VARIABLES VERBRAUCH \ Verbrauch pro Etappe
CELLS 0 HIER SWAP 0 FILL
0 VALUE #ETAPPEN \ Fuer den laengsten Weg
20 VALUE WARTE \ Verzoegerung pro Etappe
: ZIEL ( m0 m1 m2 m3 m4 - ) \ Ziel festlegen
#MOTOREN BEGIN 1-
TUCK DORT !
?DUP 0= UNTIL ;