Blog

Advent of Code Tag 17: Vakuumieren eines Gerüsts mit dem Programm Intcode

Ben de Haan

Aktualisiert Oktober 21, 2025
4 Minuten

Meine Kollegen haben mir gesagt, dass "Advent of Code ein Marathon ist". Das spüre ich inzwischen auch.

Ich werde in diesem Blogbeitrag ein wenig von meinen Erfahrungen berichten.

Dies ist mein erstes Jahr, in dem ich am Advent of Code (AoC) teilnehme, und ich muss sagen, es macht mir sehr viel Spaß. Mein persönliches Ziel ist es, mit Go, einer für mich relativ neuen Sprache, "Weihnachten zu retten".

Die Berechnung chemischer Reaktionen, das Durchlaufen von Graphen, das Lösen eines Labyrinths mit der Breadth-First-Suche... Ich habe bereits eine Menge (wieder) gelernt und ich denke, dass die Teilnahme an der Einführung von Code in einer neuen Sprache vielleicht das beste Programmier-Bootcamp ist, das es gibt. Der Schöpfer, Eric Wastl, scheint allen Rätseln viel Aufmerksamkeit gewidmet zu haben, und oft gibt es eine Hintergrundgeschichte zur Geschichte der Computerwissenschaft.


Die Komplexität der Rätsel kann Sie sehr schnell in den Wahnsinn treiben. Eines der Dinge, die mir wirklich geholfen haben, ist das Testen. Das Schreiben geeigneter Tests hilft bei der Fehlersuche ungemein, vor allem, wenn Sie denselben Code mehrmals ändern müssen. Ein weiterer Punkt, der sich wie ein roter Faden durch die Arbeit zieht, ist die Visualisierung. So können Sie leicht herausfinden, ob die 90 Grad, die Sie eingestellt haben, tatsächlich 'unten' statt 'oben' sind :).

Überqueren des Gerüsts


Heute haben wir das Intcode-Programm wieder hervorgeholt. Das Intcode-Programm nimmt eine Reihe von Ganzzahlen als Anweisungen entgegen und führt auf der Grundlage dieser Anweisungen verschiedene Funktionen aus.

Um fair zu sein, hat sie nicht wirklich viel Staub angesetzt. Diese selbstgebaute virtuelle Maschine wurde beim Bemalen unseres Raumschiffs, bei einer Partie Breakout und bei der Suche nach einem Sauerstoffgerät in einem Labyrinth eingesetzt... Jetzt müssen wir mit einem Saugroboter durch ein Gerüst navigieren.

I feel participating in the advent of code using a new language is maybe the best programming boot camp there is.
Mein Gerüst. Der Roboter steht bei '^'.

Der erste Teil des Rätsels besteht darin, herauszufinden, wo sich die Schnittpunkte befinden. Mein Algorithmus findet einfach heraus, ob die untersuchte Kachel von einem '#' umgeben ist.

Der zweite Teil ist schwieriger: Jetzt müssen wir tatsächlich alle Kacheln auf dem Pfad abfahren und sehen, wie viel Staub der Staubsauger aufnimmt. Da ich heute etwas wenig Zeit habe, habe ich Stift und Papier herausgeholt und die Schritte aufgeschrieben, die der Roboter machen sollte. Dazu musste ich mir drei Grundmuster ausdenken, da der Roboter nur eine begrenzte Anzahl von Bewegungsbefehlen ausführen kann. Als nächstes holte ich die ASCII-Tabelle hervor, um die Befehle im richtigen Format an den Roboter zu senden. Fügen Sie noch ein wenig Logik hinzu, und schon ist Teil zwei fertig!

Noch einer weniger...

Es ist nicht die Lösung, auf die ich am stolzesten bin. Idealerweise hätte ich in eine Lösung investiert, die auch für andere Gerüste geeignet ist, aber nun ja... Wenn Sie einen mehrtägigen Marathon laufen, müssen Sie sich manchmal für die weniger schöne Variante entscheiden.

Wenn Sie jedoch alle Rätsel später lösen, glauben Sie mir, wenn ich sage, dass es sich lohnt, etwas mehr Zeit in das Intcode-Programm zu investieren.

Advent des Codes 2019 Serie

Verfasst von

Ben de Haan

Contact

Let’s discuss how we can support your journey.