Stellen Sie sich vor: ein schwach beleuchteter, kellerartiger Raum voller PCs, eine große Projektionsfläche, auf der der aktuelle Stand der Dinge angezeigt wird, und 30 Teams mit jeweils 2 Personen, die über einen Computer gebeugt sind. Obwohl es genauso hektisch zugeht, handelt es sich hier nicht um ein Multiplayer-Spiel wie Quake oder Doom, sondern um den Programmierwettbewerb Masters of Java.
Der Wettbewerb läuft einen ganzen Tag lang, wobei jedes Team an 5 Aufgaben teilnimmt (von den 6 Aufgaben wurde jedem Team eine Aufgabe zugewiesen, an der es nicht teilnimmt). Jede Aufgabe enthält eine oder mehrere Java-Quelldateien mit einer Klasse oder Methode, die noch implementiert werden muss. Die Client-Software (ein Applet) verhält sich wie eine IDE (allerdings ohne praktische Javadoc-Suche oder Code-Vervollständigung) und wird verwendet, um den Code zu kompilieren, die Testfälle auszuführen und die Ergebnisse einzureichen.
Unser Team (nach einem Zählfehler Inspiring 42 genannt :) ) nahm zum ersten Mal teil. Obwohl wir bereits Erfahrung mit anderen Programmierwettbewerben hatten, war das MoJ-Format neu für uns: der Zyklus Programmieren/Kompilieren/Testen in Echtzeit, die kurze Zeitspanne für jede Aufgabe (30 Minuten) und die große sichtbare Uhr (und die begleitenden Soundeffekte, wie das Krachen eines Gongs zu Beginn der Runde und ein nerviger Piep-Piep-Ton, wenn ein anderes Team eine Lösung einreicht).
Die Organisatoren hatten bereits Tage vor der Veranstaltung eine Vorschau auf die Fälle auf der MoJ-Website veröffentlicht. Dass viele der Teilnehmer sich diese angesehen und erraten hatten, worum es sich bei den Aufgaben handeln könnte, zeigte sich bei der ersten Aufgabe (Validierung von Sudoku-Rätseln). Die Lösungen für das Sudoku-Problem wurden sehr schnell eingegeben. Wir hatten auch unsere Hausaufgaben gemacht und schafften es, als erstes konkurrierendes Team erfolgreich eine Lösung einzureichen.
Bei der zweiten Aufgabe mussten wir einen einfachen Lastausgleichsalgorithmus implementieren. Auch hier belegten wir den ersten Platz. Alles sah gut aus und der Hauptpreis (eine SUN Opteron Workstation) war fast unser!
Die dritte Aufgabe hatte mit regulären Ausdrücken zu tun und das war wirklich schwierig für uns. Am Ende der vorgegebenen 30 Minuten hatten wir immer noch nicht die richtigen regulären Ausdrücke gefunden, um dieses Problem zu lösen. Lustigerweise hatte auch das Siegerteam keine gefunden. Sie lösten das Problem, indem sie eine anonyme innere Klasse erstellten, die die Eingabe mit Hilfe eines StringTokenizers parsed. Nicht gerade das, was sich die Organisatoren vorgestellt hatten, aber es funktionierte und brachte ihnen 20 Punkte ein. Ich wünschte nur, wir hätten daran gedacht! :)
Dieses Debakel hat natürlich dazu geführt, dass wir auf den zweiten Platz zurückgefallen sind. Noch schlimmer war, dass das Team auf Platz 3 nicht an der ersten Aufgabe teilgenommen hatte, so dass es uns überholen konnte, wenn es in der Aufgabe, an der wir nicht teilgenommen hatten, gut abschnitt. Dies war die fünfte Aufgabe: MD5-Hash-Berechnungen durchführen, um verdächtige Mitarbeiter zu finden. Wir schnitten gut ab (wir wurden wieder Erste), aber das brachte uns keine Punkte ein, da wir nicht am Wettbewerb teilgenommen hatten. Also waren wir jetzt auf Platz 3.
Die letzte offizielle Aufgabe, AaiRobot, war eine lustige Aufgabe. Die Aufgabe bestand darin, einen Roboter durch ein Labyrinth zu seinem Heimatort zu führen. Allerdings gab es nur sehr wenige Informationen: einen Stoßsensor, einen Lichtsensor (um die Farbe der Kachel zu erkennen, auf der sich der Roboter befand) und einen Test, um festzustellen, ob dies das Zielfeld war oder nicht. Es gab keinen Hinweis darauf, wie weit der Roboter vom Zielfeld entfernt war.Verfasst von
Martin van Vliet
Contact
Let’s discuss how we can support your journey.



