On the first day of christmas, my true love gave to me: ... an algorithm for solving a problem in O(n) on a deterministic turing machine.
Seit 2015 begeistert der Advent of Code Entwickler weltweit. Auch in diesem Jahr stellt Eric Wastl der Welt über die Adventszeit hinweg besinnlich kniffelige Programmieraufgaben zur Verfügung (https://adventofcode.com).
Ziel des Advent of Codes ist die Lösung von 2 Teilaufgaben pro Tag, die dem Weihnachtsmann und seinen Helfern eine reibungslose Vorbereitung der globalen Geschenkeverteilung zum 25. Dezember garantieren soll.
Effizienz statt Brute Force
Beim Herausarbeiten der Lösungen kommt es allerdings nicht allein auf eine schnelle Umsetzung an, sondern vor allem auf den Einsatz effizienter Verfahren. Viele der Probleme würden sich zwar praktisch bruteforcen lassen, allerdings ändern sich zwischen den Teilaufgaben gerne Parameter der zu verarbeitenden Eingabemenge. So kann eine auf den ersten Blick effizient erscheinende Lösung den Rechner plötzlich bis an den Rand seiner Kerne auslasten – O(n3) ist für n > 100.000 anders wild.
Da wir bei eyeworkers jedem die Möglichkeit geben wollen sich nach individuellem Bedarf und Interesse weiterzubilden, dürfen sich unsere Entwickler - freiwillig - als Pairs jeden Tag eine Stunde an den Aufgaben austoben (den Cormen jederzeit griffbereit).
Python im Fokus
Wir haben uns in diesem Jahr nach einer internen Umfrage darauf geeinigt, die Aufgaben TDD mit Python anzugehen, um abseits von den üblichen Verdächtigen Java, JavaScript und PHP einmal tiefer in Datenstrukturen und Funktionen einzutauchen, die Python von Haus aus anbietet und die wir einmal nicht zur Abbildung, Anbindung und Auswertung von neuronalen Netzen, LLMs und Web-APIs nutzen wollen.
Dabei vergleichen die Entwicklergruppen nicht nur untereinander ihre Lösungen und geben sich Hilfestellungen, sondern zeigen auch kollegialen Sportsgeist, wenn es darum geht, die effizienteste Lösung umzusetzen.
Wer also einmal ein wenig Hilfestellung bei einem Problem benötigt, der darf sich gerne bei uns melden - vielleicht können wir das ein oder andere Türchen ja gemeinsam öffnen.