Advent of Code: Elegante Lösung für ein Problem der Zustandsanalyse
2025-04-09
Das letzte Rätsel von Advent of Code beinhaltet die Interpretation von `do()` und `don't()`-Anweisungen, die den Beitrag von `mul`-Anweisungen zu einer Summe aktivieren oder deaktivieren. Reguläre Ausdrücke haben Schwierigkeiten mit diesem Zustand, da sie zustandslose reguläre Sprachen erkennen. Der Autor verwendet eine Parser-basierte Lösung und hebt sie zu einem Zustands-Transformer auf, um einen zustandsbehafteten Parser zu erstellen. Dieser Parser verarbeitet `do()`, `don't()` und `mul`-Anweisungen effizient und verarbeitet etwa 1 MB Eingabe in 0,12 Sekunden – eine deutliche Verbesserung gegenüber einem regulären Ausdrucksansatz.