Advent of Code 2019 — Tag 1
Hallo und herzlich willkommen zum Advent of Code. Dieses Jahr scheint das Motiv irgendwas mit Star Wars und Rocket Science zu sein. Hinter dem ersten Türchen verbarg sich hinter der ersten Teilaufgabe eine kleine Treibstoffberechnungsaufgabe, im zweiten Schritt musste man dann noch den benötigten Treibstoff für den benötigten Treibstoff berechnen. Und dann den benötigten Treibstoff für den benötigten Treibstoff und so weiter und so weiter.
Seit letztem Jahr versuche ich den Advent of Code fast schon traditionell in vim zu schreiben. Auch, damit ich vim endlich mal mehr benutze. Das klappt solange gut, bis ich anfange zu debuggen. Dann wechsel ich meistens in eine IDE oder einen Texteditor, um Zeilen zu verschieben oder fix Debug-Code reinzufrickeln. Aber im Großen und Ganzen funktioniert das erstaunlich gut mit vim. Doch nun zur ersten Aufgabe.
Mit der ersten Aufgabe hatte ich tatsächlich relativ wenig Probleme. Es ging im Prinzip darum, Zahlen aus einer Textdatei einzulesen, eine kleine Berechnung durchzuführen und die Ergebnisse zu summieren. Und so googlete ich mir zusammen, wie man Dateien in Ruby einliest, wie eine Schleife aussieht und dann war’s das eigentlich auch schon. Das Ergebnis dürfte jetzt keinen Schönheitswettbewerb gewinnen, aber es tut und das reicht.
Ich habe mich allerdings ein bisschen darüber geärgert, dass ich keine Tests geschrieben habe. Die Aufgabe mit ihren Beispielen schreit einen regelrecht an: SCHREIB UNITTESTS. Es wäre so einfach. Mein Ziel ist aber, irgendwie erstmal einen Fuss in die Tür von Ruby zu bekommen und da habe ich für mich die Erfahrung gemacht, dass ich mir nicht zu viel vornehmen sollte — gerade am Anfang. Ansonsten ist da so ein riesengroßer Berg und für riesengroße Berge habe ich gerade als Anfänger weder genug Motivation, noch Ausdauer, noch Wissen. Dadurch würde ich mich nur selbst lähmen. Und so verschiebe ich die Tests halt auf nie später irgendwann.
An der zweiten Teilaufgabe vom ersten Tag knabberte ich ein bisschen länger. Aber auch die war irgendwann gelöst. Auch hier gilt: Es ist eher ein funktionaler Prototyp und nichts, womit ich mich jemals irgendwo bewerben sollte oder möchte. Später habe ich einem anderen Repo gesehen, dass eine elegantere Alternative eine Rekursion gewesen wäre.
Wie fandest du den ersten Tag? Bist du gut mitgekommen? Hast du Unit Tests geschrieben?