Helaas krijg je niet het volledig beeld door alleen maar rekening te houden met horizontale en verticale lijnen. Je moet ook rekening houden met diagonale lijnen.
Door een beperking van het systeem dat de hydrothermale bronnen in kaart brengt, zullen alle lijnen ofwel horizontaal, verticaal of diagonaal in een hoek van 45 graden gericht zijn. Met andere woorden:
1,1 -> 3,3
bedekt de punten 1,1
, 2,2
, and 3,3
.9,7 -> 7,9
bedekt de punten 9,7
, 8,8
, and 7,9
.Als we alle lijnen uit het voorgaande voorbeeld in rekening brengen, dan krijgen we het volgende diagram:
1.1....11.
.111...2..
..2.1.111.
...1.2.2..
.112313211
...1.2....
..1...1...
.1.....1..
1.......1.
222111....
Je moet nog altijd bepalen hoeveel punten er door minstens twee lijnen bedekt worden. In het bovenstaande voorbeeld is dat nog steeds het geval voor alle punten waar in het diagram een 2
of groter staat - nu zijn dat in totaal 12
punten.
Beschouw alle lijnen. Hoeveel punten worden door minstens twee lijnen bedekt? Bepaal dit op de volgende manier:
overlap
waaraan de padnaam (string
) moet doorgegeven worden van een tekstbestand met een lijst van de nabijgelegen lijnen met bronnen. De functie moet teruggeven hoeveel punten (number
) door minstens twee lijnen bedekt worden, als we alle lijnen in rekening brengen.In deze interactieve sessie gaan we ervan uit dat de tekstbestanden lines01.txt
1 en lines02.txt
2 zich in de huidige directory bevinden.
> overlap("lines01.txt")
12
> overlap("lines02.txt")
20898
Jari Komppa (@Sol_HSA3) animeerde zijn oplossing.