Je analyse bevestigde alleen wat iedereen al vreesde: de twee lijsten met locatie-ID’s zijn inderdaad heel verschillend.

Of toch niet?

The Historians zijn het er niet over eens welke groep de fouten heeft gemaakt of hoe ze de meeste schrijfsels van de Chief moeten lezen, maar in de commotie valt je een interessant detail op: een hoop locatie-ID’s komen in beide lijsten voor! Misschien zijn de andere nummers helemaal geen locatie-ID’s, maar verkeerd geïnterpreteerd handschrift.

Deze keer moet je precies uitzoeken hoe vaak elk getal uit de linker lijst voorkomt in de rechter lijst. Bereken een totale gelijkenisscore door elk getal in de linker lijst op te tellen en te vermenigvuldigen met het aantal keren dat dat getal in de rechter lijst voorkomt.

Hier zijn weer dezelfde voorbeeldlijsten:

3   4
4   3
2   5
1   3
3   9
3   3

Voor deze voorbeeldlijsten volgt hier het proces voor het vinden van de similariteitsscore:

Dus voor deze voorbeeldlijsten is de similariteitsscore aan het einde van dit proces 31 (9 + 4 + 0 + 0 + 9 + 9).

Kijk nog eens naar je linker- en rechterlijst. Wat is hun gelijkenisscore?

Opgave

Schrijf een bash shell script similarity waaraan de padnaam moet doorgegeven worden van een tekstbestand dat twee lijsten met locatie-ID’s naast elkaar bevat. Het script moet de gelijkenisscore tussen de linker en rechter lijst uitschrijven naar stdout. Als we bijvoorbeeld dit tekstbestand nemen (data.txt1)

3   4
4   3
2   5
1   3
3   9
3   3

dan is de gelijkenisscore tussen de linkerlijst en de rechterlijst gelijk aan \(9 + 4 + 0 + 0 + 9 + 9 = 31\).

Voorbeeld

In deze interactieve sessie veronderstellen we dat het tekstbestand data.txt2 in de huidige directory staat.

$ similarity data.txt
31

Advent of Code 2024

Deze opgave is gebaseerd op de Advent of Code 20243 van Eric Wastl.