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.txt1 en positions02.txt2 zich in de huidige directory bevinden.
> fuel ("positions01.txt")
168 :: Int
> fuel ("positions02.txt")
98363777 :: Int