207b
<< <> >>

De oplossing

Voorzie de motoren van benzinetanks.

De brandstof

  1. Per etappe verbruikt de motor (ook als hij niet beweegt!) 13 liter (het aantal PLOP's, de te draaien hoek).
  2. Raakt de brandstoftank leeg, dan wordt er precies 30 liter bijgetankt (het aantal etappes, de grootste hoek).

De redenering

Per etappe verbruikt hij 13 liter, over 30 etappes: 30 * 13 liter.
30 * 13 = 13 * 30. Hoevaak zal hij moeten tanken? Juist, 13 keer.
En hoeveel stapjes moest hij ook weer? ...

Ziedaar de oplossing:

Als in een etappe een tank leeg raakt, wordt er getankt én gePLOPt. De overige (17) etappes zijn PILI. Haal nu die benzinetanks maar weer weg en onthoud de gedachtengang, want die wordt toegepast in de volgende code.

De Forth code

Forth file: c207.frt

\ ROBOT ARM (Albert Nijhof)

FORTH DEFINITIONS   DECIMAL
: VARIABLES
  CREATE ( n -- ) CELLS ALLOT
  DOES> ( index body - adres ) SWAP CELLS + ;

5 DUP CONSTANT #MOTOREN
DUP VARIABLES HIER        \ Lijst v motorstanden
DUP VARIABLES DAAR        \ Lijst v doelstanden
DUP VARIABLES STAPJE      \ -1 of +1 (richtingen)
DUP VARIABLES TANK        \ Hoeveelheid brandstof
DUP VARIABLES VERBRUIK    \ Verbruik per etappe
CELLS   0 HIER   SWAP 0 FILL

0 VALUE #ETAPPES          \ Voor de langste weg
20 VALUE WACHT            \ Vertraging per etappe

 : DOEL ( m0 m1 m2 m3 m4 - )   \ Doel vastleggen
   #MOTOREN BEGIN 1-
                  TUCK DAAR !
                  ?DUP 0=
            UNTIL ;
>>