Je doet dit al lang genoeg om te weten dat je voor 25 december alle vijftig sterren moet controleren om de sneeuwwerkzaamheden te herstellen.

Verzamel sterren door puzzels op te lossen. Er worden elke dag van de adventskalender twee puzzels beschikbaar gesteld. De tweede puzzel wordt pas ontgrendeld als je de eerste voltooid hebt. Elke puzzel levert één ster op. Veel succes!

Je probeert te vragen waarom ze niet gewoon een weermachine1 kunnen gebruiken (“niet krachtig genoeg”) en waar ze je naartoe sturen (“de lucht”) en waarom je kaart er meestal blanco uitziet (“je stelt wel veel vragen”) en wacht even, zei je net de lucht (“natuurlijk, waar denk je dat sneeuw vandaan komt”) als je je realiseert dat de Elfen je al in een trebuchet2 aan het laden zijn (“blijf alsjeblieft stilstaan, we moeten je vastbinden”).

Terwijl ze de laatste aanpassingen maken, ontdekken ze dat hun kalibratiedocument (je puzzelinvoer) gewijzigd is door een heel jonge Elf die blijkbaar gewoon enthousiast was om haar kunstige vaardigheden te tonen. Het gevolg is dat de Elfen moeite hebben om de waarden op het document te lezen.

Het nieuwe en verbeterde kalibratiedocument bestaat uit regels tekst. Elke regel bevatte oorspronkelijk een specifieke kalibratiewaarde die de Elfen nu moeten terugvinden. Op elke regel kan de kalibratiewaarde gevonden worden door het eerste cijfer en het laatste cijfer (in die volgorde) te combineren tot één tweecijferig getal.

Opgave

Schrijf een bash shell script trebuchet waaraan de padnaam van een kalibratiedocument moet doorgegeven worden. Het shell script moet de som van alle kalibratiewaarden uitschrijven naar stdout. Als we bijvoorbeeld dit kalibratiedocument (data.txt3) nemen

1abc2
pqr3stu8vwx
a1b2c3d4e5f
treb7uchet

dan zijn de kalibratiewaarden van de vier regels respectievelijk 12, 38, 15 en 77. Als je die bij elkaar optelt, dan krijg je 142.

Voorbeeld

In deze interactieve sessie gaan we ervan uit dat het tekstbestand data.txt4 zich in de huidige directory bevindt.

$ trebuchet data.txt
142

Advent of Code 2023

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