De krabben lijken niet zo opgezet met de voorgestelde oplossing. Misschien begrijp je hun krabtechniek verkeerd?
Nu blijkt dat de motoren van krabbenonderzeeërs brandstof niet met een constante snelheid verbranden. In plaats daarvan kost elke verandering van 1 stap in de horizontale positie 1 eenheid brandstof meer dan tijdens de vorige stap: de eerste stap kost 1
, de tweede stap kost 2
, de derde stap kost 3
, enzovoort.
Naarmate elke krab verder beweegt, wordt elke stap duurder. Dit verandert uiteraard de optimale horizontale positie om alle krabben uit te lijnen. In het voorgaande voorbeeld wordt dit nu positie 5
:
16
naar 5
: 66
brandstof1
naar 5
: 10
brandstof2
naar 5
: 6
brandstof0
naar 5
: 15
brandstof4
naar 5
: 1
brandstof2
naar 5
: 6
brandstof7
naar 5
: 3
brandstof1
naar 5
: 10
brandstof2
naar 5
: 6
brandstof14
naar 5
: 45
brandstofDit kost in totaal 168
brandstof. Dit is de nieuwe goedkoopst mogelijke positie om alle krabben uit te lijnen. De oude uitlijnpositie (2
) kost in plaats daarvan nu 206
brandstof.
Bepaal de horizontale positie waarop de krabben zich kunnen uitlijnen met zo weinig mogelijk brandstof. Hoeveel brandstof moeten ze verbruiken om zich op die positie uit te lijnen? Bepaal dit op de volgende manier:
fuel
waaraan de padnaam (String
) moet doorgegeven worden van een tekstbestand met de horizontale posities van alle krabben in een zwerm. De functie moet teruggeven hoeveel brandstof (int
) er minimaal nodig is om alle krabben op dezelfde horizontale positie uit te lijnen.In deze interactieve sessie gaan we ervan uit dat de tekstbestanden positions01.txt
1 en positions02.txt
2 zich in de huidige directory bevinden.
> Submission.fuel("positions01.txt")
168
> Submission.fuel("positions02.txt")
98363777