Vlak voor je de bestemming aan de kapitein hebt doorgegeven, kom je tot de vaststelling dat de werkelijke betekenis van de acties al de hele tijd op de achterkant van de instructies is afgedrukt.
Bijna alle acties geven aan hoe het waypoint1 moet verplaatst worden. Dat bevindt zich relatief ten opzichte van de positie van het schipt:
N
betekent: verplaats het waypoint het gegeven aantal stappen naar het noorden.S
betekent: verplaats het waypoint het gegeven aantal stappen naar het zuiden.E
betekent: verplaats het waypoint het gegeven aantal stappen naar het oosten.W
betekent: verplaats het waypoint het gegeven aantal stappen naar het westen.L
betekent: draai het waypoint het gegeven aantal graden naar links (tegenwijzerzin).R
betekent: draai het waypoint het gegeven aantal graden naar rechts (wijzerzin).F
betekent: vaar het gegeven aantal stappen vooruit naar het waypoint.Het waypoint begint 10 eenheden ten oosten en 1 eenheid ten noorden van het schip. Het waypoint is relatief ten opzichte van het schip. Dat wil zeggen: als het schip beweegt, dan beweegt het waypoint mee.
Stel dat we bijvoorbeeld dezelfde instructies als hiervoor zouden gebruiken:
F10
verplaatst het schip 10 keer naar het waypoint (in totaal 100 eenheden oost en 10 eenheden noord), waardoor het schip op 100 oost en 10 noord terechtkomt. Het waypoint blijft op 10 eenheden ten oosten en 1 eenheid ten noorden van het schip.N3
verplaatste het waypoint 3 eenheden naar het noorden, naar 10 eenheden ten oosten en 4 eenheden ten noorden van het schip. Het schip blijft op 100 oost en 10 noord.F7
verplaatst het schip 7 keer naar het waypoint (in totaal 70 eenheden oost en 28 eenheden noord), waardoor het schip op 170 oost en 38 noord terechtkomt. Het waypoint blijft op 10 eenheden ten oosten en 4 eenheden ten noorden van het schip.R90
draait het waypoint 90 graden in wijzerzin rond het schip, waardoor het 4 eenheden ten oosten en 10 eenheden ten zuiden van het schip staat. Het schip blijft op 170 oost en 38 noord.F11
verplaatst het schip 11 keer naar het waypoint (in totaal 44 eenheden oost en 110 eenheden zuid), waardoor het schip op 214 oost en 72 zuid terechtkomt. Het waypoint blijft op 4 eenheden ten oosten en 10 eenheden ten zuiden van het schip.Na deze instructies bevindt het schip zich op Manhattan-afstand2 214 + 72 =
286
van zijn beginpositie.
Zoek uit waar de navigatie-instructies daadwerkelijk naartoe leiden. Wat is de Manhattan-afstand tussen die positie en de beginpositie van het schip? Hiervoor ga je als volgt te werk:
distance
waaraan de padnaam (String
) moet doorgegeven worden van een tekstbestand met navigatie-instructies. De functie moet de Manhattan-afstand (Int
) teruggeven tussen de positie waar de navigatie-instructies naartoe leiden en de beginpositie van het schip.In deze interactieve sessie gaan we ervan uit dat het tekstbestand instructions.txt
3 zich in de huidige directory bevindt.
> distance "instructions.txt"
286