Was ein Unglück! Gerade als Santa Claus am 1. Dezember am Nordpol aufbrechen will, stolpert eine seiner Elfen und schwupps: Der Schlüssel zum Schlitten fällt Santa Claus aus der Hand, rutscht über das Eis und versinkt in den unendlichen Tiefen des Nordpolarmeeres. „Sub-Santa-One“ wird daraufhin sofort einsatzbereit gemacht und taucht dem Schlüssel nach. Das U-Boot ist vollgestopft mit der neusten Computertechnik. Was sich anhört wie ein Drehbuch war nichts weniger als die Aufgabenstellung des „Advent of Code 2021“ – einer jährlichen Reihe von Herausforderungen zum Thema Computerprogrammierung, die einem Adventskalender folgen. Den „Advent of Code“ gibt es seit 2015 und seine Programmierrätsel decken eine Vielzahl von Fähigkeiten ab. Auch ein Team der Hochschule Hof beteiligte sich in diesem Jahr an dem Wettbewerb.
Über 210.000 der besten Informatiker weltweit begleiteten diesmal das virtuelle U-Boot „Sub-Santa-One“ auf seiner Reise und standen bereit, um bei unweigerlich auftretenden Softwarepannen einspringen zu können. Bis zum 25. Dezember mussten jeden Tag zwei Programmaufgaben gelöst werden, sonst wäre Weihnachten 2021 ausgefallen. Unter den Teilnehmenden waren dieses Jahr auch 19 Hofer Informatiker. Zu diesen gehören u.a. Katharina Reiner und Julian Köglmeier, die beide alle 50 Wettbewerbsrätsel lösen konnten und so mithalfen den Schlüssel zu Santas Schlitten rechtzeitig zu finden.
Der Wettbewerb
Der Amerikaner Eric Wastl stellt jeden Tag vom 1. bis zum 25. Dezember um 0:00 Ostküstenzeit der USA die erste von zwei Programmieraufgaben ins Netz. Das Ziel ist es dann möglichst schnell das Programm zur Berechnung der korrekten Lösung zu schreiben und sie einzusenden. Dann erst bekommt man Teil 2 der Programmieraufgabe. Je schneller man mit den Aufgaben fertig ist, umso mehr Punkte bekommt man für die Lösung.
In der Einführung zu den Aufgaben schreibt Eric Wastl „You don’t need a computer science background to participate – just a little programming knowledge and some problem solving skills will get you pretty far.“ Dass das stimmt, das zeigen die beiden Gewinner der Hofer Wertung auf ganz besondere Art und Weise. Sie sind nämlich Studierende aus dem ersten Semester des Studiengangs Informatik.
Wer glaubt, dass die Aufgaben einfach sind, der wird bei einer eigenen Teilnahme feststellen, dass sich Eric Wastl enorm viel Mühe beim Aufstellen der Rätsel gibt. Dennoch helfen auch logisches Denken und Kreativität sehr weit.”
Prof. Dr. Peter Stöhr
Interview
Aber was macht den Reiz aus, solche Programmieraufgaben zu lösen? Über diese und noch ein paar andere Fragen hat sich “Campuls-digital” mit Katharina Reiner, Julian Köglmeier und Prof. Dr. Peter Stöhr unterhalten:
Was bringt einen dazu, sich morgens um 6:00, also noch vor den Vorlesungen, an den Rechner zu setzen und zu versuchen die Lösung für die Programmieraufgabe zu finden?
Prof. Dr. Peter Stöhr:
„Immer wenn man George Mallory fragte warum er, trotz all seiner Fehlschläge, den Mount Everest besteigen will antwortetet er mit „Because it is there!“. Genauso ist es mit den Programmieraufgaben. Sie sind einfach da. Und natürlich könnte man sie sich auch erst um 15:00 anschauen, aber wenn man einmal den „Fehler“ begeht und sie sich gleich am Morgen ansieht, dann will man sie auch gleich lösen. Für die ersten 100 korrekten Lösungen wird man mit einem Platz auf dem global Leaderboard belohnt. Aber man muss auch realistisch bleiben. Die teilnehmenden Informatiker in den USA oder in Asien haben einen großen Vorteil: Der Zeitpunkt der Bekanntgabe der neuen Programmieraufgabe passt bei ihnen einfach besser in den Lebensrhythmus eines Informatikers.“
Katharina Reiner:
„In der ersten Woche war es die Aufregung um das ganze Event und die Möglichkeit, sich bei leichten Aufgaben mit anderen zu messen. Und dann hatte ich schon einmal richtig angefangen, da wollte ich nicht einfach wieder aufhören und die Aufgaben erst später bearbeiten.“
Julian Köglmeier:
„Auch wenn ich die Aufgaben nicht direkt um 6 Uhr bearbeitet habe – meist eher gegen 7 oder 8 Uhr – bin ich dennoch oft einfach früher aufgestanden, nur um diese zu lösen. Ein Grund war natürlich, auf dem privaten Leaderboard Punkte zu sammeln, aber auch die Aufgaben an sich waren verlockend. Ich fand es spannend, die neue Aufgabe des Tages anzusehen und mir dafür unter Zeitdruck durch die weltweite “Konkurrenz” eine Lösung auszudenken.
Welche Aufgabe hat ihnen am meisten Spaß gemacht und warum?
Prof. Dr. Peter Stöhr:
„Das war die Aufgabe vom 24. Dezember. Beim Lesen der Aufgabe hatte mich Eric auf eine vollkommen falsche Fährte gelockt, um mir dann im letzten Absatz die bereits vorhandene Lösungsidee unter den Füßen wegzuziehen. Für die Lösung selber musste man dann nur knobeln und ist dann – ohne einen einzige Zeile zu programmieren – auf die Lösung gekommen. Es war nur schade, dass die Aufgabe am 24. Dezember dran kam, denn genau an dem Tag hat man, auch als Informatiker, eigentlich etwas ganz anderes im Sinn.“
Katharina Reiner:
„Ich fand die Aufgabe von Tag 13 sehr cool. Man musste das Falten eines transparenten Papiers simulieren. Die Punkte, die nach allen Falt-Schritten am Ende durchschienen, ergaben einen Buchstabencode. Dieser graphische Ansatz hat mir sehr gut gefallen und die Aufgabe war gerade noch so leicht, dass sie schnell zu programmieren war, aber dennoch anspruchsvoll genug, um nicht langweilig zu sein.“
Julian Köglmeier:
„Eine meiner Lieblingsaufgaben ist vermutlich Aufgabe 14. Den ersten Teil der Aufgabe habe ich ziemlich stumpf mit dem erstbesten Ansatz gelöst, der mir in den Kopf gekommen ist. Im zweiten Teil war dieser Ansatz jedoch nicht mehr möglich, wodurch ich mir Gedanken machen musste. Dadurch musste ich die Aufgabe von verschiedenen Seiten beleuchten, bis es dann schließlich im Kopf geklickt hat und ich den richtigen Ansatz gefunden habe. Das Gefühl eines “Aha”-Moments war in dieser Aufgabe für mich besonders stark.“
Was macht den Reiz dieser Rätsel aus?
Prof. Dr. Peter Stöhr:
„Das sind eigentlich zwei Sachen: Zuerst geht es darum, das Rätsel zu knacken. Wenn man das geschafft hat, steht man vor dem Problem, wie programmiert man es am besten? Diese Frage nach der richtigen Art und Weise der Programmierung bringt noch etwas Pep rein. Bei mir war die Programmierung meist eine Mischung aus kontrolliertem Chaos und Struktur, wie man sie sonst in den Vorlesungen nicht zeigen kann. Das Chaos kommt daher, weil ich möglichst schnell eine Lösung für die erste Teilaufgabe des Tages haben wollte. Die zweite Teilaufgabe baut dann in der Regel auf die erste auf. Und hier kommt die Struktur und die Hoffnung auf Wiederverwendung ins Spiel. Dass man hier nicht auf „Teufel komm raus“ programmieren muss sieht man auch daran, dass meine einzelnen Lösungen wohl kaum mehr als 200 Zeilen Swift-Code umfasst haben.
Katharina Reiner:
„Mir macht einfach Programmieren allgemein Spaß und da sind diese kleinen, aber kniffligen Aufgaben genau das Richtige.
Julian Köglmeier:
„Für mich ist das die Tatsache, dass die Aufgaben nicht nur stumpfe “Frage Google nach dem Algorithmus und schreib’ ihn ab”-Aufgaben sind, sondern immer einen gewissen Trick haben, den man erst finden muss. Viele der Aufgaben lenken einen erst auf einen falschen Weg, was zu einem Algorithmus führt, der vielleicht sogar für den ersten Teil der Aufgabe genügt. Spätestens der zweite Teil erscheint einem dann aber auf den ersten Blick kaum oder gar nicht machbar, aber mit etwas Nachdenken findet man dann einen Ansatz, der deutlich einfacher ist und das Problem besser löst.
Danke für das Gespräch!