Fehler in der Rekursion
Lassen Sie uns zunächst über Tag 24 sprechen - "Planet der Zwietracht". Dieses Rätsel erinnerte mich an das faszinierende Conway's Game of Life aus dem Jahre 1970.
Im ersten Teil ging es darum, ein sich wiederholendes Muster in der sich ständig ändernden Konstellation von Wanzen zu finden. Jetzt kam mir mein Schleifendetektor, den ich an Tag 12 vorbereitet hatte, um das "N-Körper-Problem" zu lösen, sehr gelegen. Dieser Teil war also schnell gelöst. Lassen Sie uns also mit dem typischen fortgeschritteneren Teil fortfahren.

Im zweiten Teil wurde dem Universum eine weitere Dimension, nämlich die Rekursion, hinzugefügt. Das erinnerte mich an den so genannten Droste-Effekt aus dem Jahr 1904. Tatsächlich haben wir es in diesem Fall mit einer Variante zu tun, bei der die Rekursion sowohl nach innen als auch nach außen angewendet wird. Es ist vergleichbar mit dem unendlichen Vergrößern und dem unendlichen Verkleinern. Um dieses Rätsel zu lösen, musste jedoch nur eine begrenzte Anzahl von Ebenen ausgewertet werden, da es zu jedem Zeitpunkt nur eine endliche Anzahl von Fehlern gibt.
Schwierigkeiten und Illusionen
Lassen Sie uns nun über Tag 25 sprechen - "Kryostase". Das letzte Rätsel dieses Jahres hat gezeigt, dass der Stachel im Schwanz für mich steckt.
Vielleicht hat es etwas damit zu tun, dass ich im Dezember jeden Tag um 5:30 Uhr aufstehe (und um 5:45 Uhr Kaffee trinke), was nicht gerade meine übliche Aufstehzeit ist, vor allem nicht an den kürzesten Tagen des Jahres. Das ist der Aspekt, vor dem ich mich im Vorfeld am meisten gefürchtet hatte, aber während des Spiels wurde er zu einem natürlichen Teil meines Modus Operandi, ebenso wie der Versuch, das Rätsel vor dem Morgengrauen zu lösen, was mir normalerweise gelang, aber nicht immer.
Aufgrund der gesellschaftlichen Aktivitäten an Heiligabend hatte ich nur 3 Stunden Schlaf, was auch nicht gerade hilfreich war.

Ich konnte die Schwierigkeit des nächsten Rätsels immer vorhersagen. Zumindest dachte ich das. Dieses Jahr stand neben meinem Schreibtisch ein echter Adventskalender mit kleinen kosmetischen Geschenken, deren Türchen sich nur öffnen ließen, wenn ich das Rätsel des Tages löste. Irgendwie hatte ich mir eingeredet, dass die Größe und Form der Türchen ein Hinweis auf die Schwierigkeit des entsprechenden Rätsels sei. Am Ende stellte sich dies als eine Illusion heraus. Auf verschiedene Weise habe ich die Schwierigkeit jedes Rätsels anhand der globalen Statistiken und meiner persönlichen Statistiken berechnet. Ich habe diese Ergebnisse endlos mit den Abmessungen der Türen verglichen, aber ich habe keine konsistente Korrelation gefunden.
Wie auch immer, es gab nur 24 Türen, also hatte ich keine Ahnung, was mich beim letzten Rätsel erwarten würde.
Das Vermächtnis von Alan Turing
Der Computer IntCode™️ muss zum letzten Mal in Betrieb genommen werden. Ich selbst habe ihn als Turing-Maschine bezeichnet, was eine etwas falsche Bezeichnung ist. Diese Maschine hat ein endliches Band, sollte also eigentlich eine Endlosmaschine genannt werden. Außerdem hat sie einen Kopf, der sich an zufällige Positionen bewegen kann. Ich finde, das ist ein brillanter Fund. Es ist erstaunlich, wie der Schöpfer von Advent of Code, Eric Wastl, es schafft, jedes Jahr weitere Neuheiten hervorzuzaubern. Obwohl es verlockend ist, habe ich nicht versucht, das Eingabeband automatisch zu dekompilieren und in einer Programmiersprache der 3.
Es ist eine Dimension, die den Rätseln ein wenig Magie verleiht. Diese Kategorie von Rätseln ist besonders interessant, weil sie einige zusätzliche Nachforschungen erfordern. Es ist nicht von vornherein klar, was Sie erwartet, so dass Sie etwas nachforschen müssen, um herauszufinden, was tatsächlich vor sich geht. Es ist arbeitsintensiver, während andere Rätsel hauptsächlich vom reinen Denken abhängen. In jedem Fall ist eine Menge kreatives Denken erforderlich, um alle Probleme zu lösen.
Verloren im euklidischen Raum
Um das letzte Rätsel zu lösen, muss ein Raumschiff zunächst im Detail erkundet werden, wofür mehrere Ansätze denkbar sind. Zunächst habe ich versucht, alle Räume auf einem normalen zweidimensionalen Raster abzubilden. Das führte zu ziemlich verwirrenden Ergebnissen und aus unklaren Gründen beschloss ich, eine dritte Dimension hinzuzufügen, um sozusagen in einem dreidimensionalen
Da ich mit meinem ersten Ansatz nicht besonders zufrieden war, begann ich, über Alternativen nachzudenken. Es musste einfach eine viel einfachere Lösung geben.
Auf der einen Seite gibt es einen abstrakteren Ansatz, ohne überhaupt zu versuchen, die Räume auf einer Karte zu visualisieren. Die Anwendung des Konzepts der entgegengesetzten Windrichtungen 'Norden und Süden' und 'Osten und Westen' reicht aus und es ist überhaupt nicht nötig, sich um die Position des Droiden in einem imaginären Raster zu kümmern. Es geht nur darum, eine intelligente Methode anzuwenden, um durch das Schiff zu laufen und alle Räume zu entdecken.
Endlich eine gute Visualisierung
Andererseits konnte ich den eher visuell orientierten Ansatz immer noch nicht aufgeben. Ich kämpfte eine Weile damit, was ich mit dem Raum machen sollte, der je nach Richtung, in die ich ging, unterschiedliche Namen und Türen hatte. Es war klar, dass ich über den Tellerrand hinausschauen musste. Dann erinnerte ich mich plötzlich an die rekursive Struktur, die ich am Vortag verwendet hatte.
I had this typical Eureka moment. Most participants will recognize this type of experience.
Ich musste einfach den hartnäckigen Glauben aufgeben, dass das Raster perfekt gleichmäßig sein sollte. Irgendwie war ich furchtbar voreingenommen und nahm einfach an, dass jeder Raum die gleiche Form und Größe hat. Schließlich gelang es mir, herauszufinden, wie das Innere des Weihnachtsmannschiffs aussehen könnte.

Gewichte auf der Waage
Wenn Sie bis zum "Druckempfindlichen Boden" gekommen sind, nachdem Sie einige Gegenstände eingesammelt und verschiedene Fallen überwunden haben, sagt eine laute Roboterstimme, dass ich zurück zum "Sicherheitskontrollpunkt" geschleudert werde.
Alert! Droids on this ship are lighter|heavier than the detected value!
Die Herausforderung besteht nun darin, herauszufinden, welche Kombination von Gegenständen ein Gesamtgewicht hat, das genau dem richtigen Wert entspricht. Nach einigen Versuchen sagt schließlich eine laute Roboterstimme, dass ich jetzt das Cockpit betreten darf.
Analysis complete! You may proceed. Oh, hello! You should be able to get in by typing ***** on the keypad at the main airlock.
Teilweise bestellt
Obwohl es möglich ist, eine (minimale) Lösung für die tatsächlichen Gewichte der verschiedenen Gegenstände zu finden, die in den verschiedenen Räumen zu finden sind, ist dies nicht notwendig, um das Rätsel zu lösen.
Beachten Sie auch, dass die Menge aller Teilmengen eine so genannte teilweise geordnete Menge definiert. Dies bedeutet, dass bei einer Sammlung von Gegenständen, die als zu schwer oder zu leicht eingestuft werden, nicht alle Unter- und Obermengen bewertet werden müssen. Ein binärer Suchalgorithmus kann in diesem Fall jedoch nicht angewendet werden, da die Beziehung zwischen Unter- und Obermenge keine lineare Reihenfolge definiert.
Zeit zum Rekalibrieren
Nachdem ich das richtige Passwort eingegeben hatte, musste ich nur noch "den Warp-Antrieb neu ausrichten", um den 50. Jetzt kann ich alle Ostereier sehen und habe Zeit, meinen zirkadianen Rhythmus neu zu kalibrieren.
Ich habe es also wieder bis zum Ende geschafft. Letztes Jahr habe ich zum ersten Mal teilgenommen und wusste nicht wirklich, was mich erwartet. Dieses Jahr war ich viel besser vorbereitet und profitierte sehr von der Erfahrung und der Schnelligkeit, die ich letztes Jahr gewonnen hatte, sowie von einigen Bibliotheksfunktionen, die ich zur Lösung von Standardproblemen erstellt habe. So muss ich zum Beispiel nicht mehr den Dijkstra-Algorithmus auf der Stelle ausschreiben.
In diesem Jahr erforderten einige Rätsel mathematische Kenntnisse, vor allem Tag 22 - "Slam Shuffle", das ohne die Beherrschung der modularen Arithmetik nicht gelöst werden konnte. Das stellte sich für einige Teilnehmer als knifflig heraus, aber ich war von dieser Art von Rätsel eigentlich angenehm überrascht. Ein weiteres, besonders interessantes Rätsel war Tag 18 - "Viele-Welten-Interpretation". Es erfordert nicht nur ein ziemlich hohes Maß an abstraktem Denken. Es ist auch das Rätsel, bei dem die meisten Optimierungen erforderlich waren, um es mit einer Rechenzeit von weniger als 10 Sekunden zu lösen.

Obwohl es mir nicht gelungen ist, Punkte in der globalen Rangliste zu sammeln und der Kampf um den Sieg bei Xebia nicht so spannend war wie im letzten Jahr, bin ich dennoch stolz, den Wettbewerb an der Spitze unserer privaten Rangliste zu beenden. Ich muss einfach sagen, dass ich wieder viel Spaß hatte (und manchmal auch ein bisschen Frust) und ich freue mich schon auf die Ausgabe im nächsten Jahr.
Advent des Codes 2019 Serie
- Advent of Code 2019 hat begonnen - Machen Sie mit!
- Advent of Code 2019 - Tag 2
- Advent des Codes: Wie Excel mir den Tag rettete und auch meinem Sohn den Tag rettete
- Advent des Codes - Tag 4: Visualisieren
- Advent des Codes - Tag 5: Saintaerkla2s
- Advent of Code - Tag 6: Wie ich an AoC hängen geblieben bin
- Advent of Code - Tag 7: Teilen Sie Ihren Arbeitsablauf
- Advent of Code - Tag 8: Wie einfache Dinge für manche Menschen sehr schwer sein können
- Advent of Code - Tag 9: Wie ich anfing, Spaß am Lösen von Programmierrätseln zu haben
- Advent of Code - Tag 10: Weltraum-Cowboys schießen Pixel in den Himmel
- Advent des Codes - Tag 11: Sein oder nicht sein
- Advent of Code - Tag 12: Nach dem Mond schießen
- Advent des Codes - Tag 14: Kettenreaktion
- Advent des Codes - Tag 16: Flüche
- Advent of Code - Tag 17: Vakuumieren eines Gerüsts mit dem Intcode-Programm
- Wie kleine grüne Männchen mir geholfen haben, ein Rätsel zu lösen
- Advent of Code - Tag 20: Ein bisschen Überarbeitung
- Advent of Code - Tag 21: Es ist ein Marathon, kein Sprint
- Advent of Code - Tag 22: Mischen von Karten bis in alle Ewigkeit
- Advent of Code - Tag 23: Das Netzwerk ist zuverlässig
- Advent of Code - Tag 24 & 25: Unkonventionelles Denken
Verfasst von
Marcus Martina
Contact



