Matthias Sitte bio photo

Matthias Sitte

Just another physicist enthusiastic about Linux and FOSS

Twitter Facebook Google+ LinkedIn XING ResearchGate Google Scholar Github Stackoverflow

Vom 1. Dezember 2012 bis zum 31. Januar 2013 fand der sechste freiesMagazin-Programmierwettbewerb statt. In diesem Zeitraum konnten Programmierinteressierte ein Programm (einen so genannten Bot) einreichen, der versucht auf einer untergehenden Insel Felder trockenzulegen, um möglichst lange zu überleben. Die Auswertung der eingereichten Beiträge ist beendet und die Gewinner stehen fest.

Teilnehmer

Insgesamt haben 20 Teilnehmer für den Wettbewerb einen Bot eingereicht. Damit war die Akzeptanz sehr hoch, was uns natürlich freut. Auch zwei Schulklassen des Gymnasiums Egg haben unter Lehrer Dominik Bartenstein teilgenommen. Es freut uns ebenso, dass die Aufgabe auch als Schulstoff dienen konnte.

Unter den Einsendungen waren wieder verschiedenste Sprachen vertreten, darunter wohl-bekannte wie C++, Python und Java, aber auch „Exoten“ wie Haskell oder Scala wurden genutzt.

Als Gewinn konnten die ersten drei Plätze einen der folgenden drei Preise mitnehmen:

Zusätzlich gab es für die Plätze 1 bis 10 eine Doppel-CD des letztjährigen Free! Music! Contest 2012.

Auswertung

Nachdem am 31. Januar 2013 alle Einsendungen vorlagen, wurde nach etwas Vorbereitungsarbeit der Wettbewerb gestartet. Dabei wurde jeder Bot je 1000 Mal auf den vorhandenen Inseln/Spielfeldern getestet und am Ende der Mittelwert der überlebten Runde für jedes Spielfeld berechnet. Diese häufige Wiederholung wurde durchgeführt, da die Felder einer Insel zufällig überflutet wurden und durch die Wiederholung und den Mittelwert eine bessere Aussage über die „Intelligenz“ eines Bots getroffen werden konnte.

Insgesamt mussten die Bots auf 22 Spielfeldern ihr Geschick beweisen. 12 Inselfelder stammten dabei von der Wettbewerbsleitung und waren bis auf die Beispielinsel island.txt den Teilnehmern nicht bekannt. Die restlichen 10 Inselfelder wurden von Teilnehmer selbst eingereicht, die dazu die Möglichkeit hatten.

Am 1. Februar 2013 startete die Auswertung der Bots und war am 15. Februar 2013 zu Ende. Trotz der Zeitbegrenzung von 0,1 Sekunden pro überlebter Runde dauerte die Berechnung also noch zwei Wochen, in denen der Testrechner 24 Stunden pro Tag durchlief. Im Vorfeld hätte wir diesen Aufwand nicht angenommen. Glücklicherweise nutzten nur wenige Teilnehmer das Zeitlimit bis zum Anschlag aus, sonst wäre der Wettbewerb auch nach einem Monat noch nicht zu Ende gewesen. Der „Worst Case“ eines Teilnehmers lag bei ca. vier Tagen Berechnungszeit für die 1000 Iterationen auf den 22 Spielfeldern.

Die Gewinner

Um es nicht unnötig spannend zu machen, hier die Auswertung des Wettbewerbs:

Platz Name Punkte Dauer (in h) Sprache Lizenz
1. Philipp Staudinger 3187,325 6:50 Java GPLv3
2. Christoph Staudinger 3167,576 9:23 Python GPLv3
3. Horst Hettrich 3166,223 25:38 Python GPLv3
4. Tom Richter 3160,519 44:02 Python GPLv3
5. Florian Satzger 3117,693 0:14 C++ LGPLv3
6. Patrick Uhlmann 3108,073 18:43 Mono Apache
7. Momme Maraun 3101,950 1:02 C++ LGPLv3
8. Harald Demel 3101,891 89:47 Groovy FreeBSD
9. Markus Brenneis 3082,350 0:20 C++ GPLv3
10. Markus Braun 3058,158 0:14 C++ LGPLv3
11. Tobias Groß 3028,445 11:50 Ruby WTFPL
12. Justus Richter 3025,668 22:33 Python GPLv3
13. M.Hummel & K.Kleine 2963,948 55:34 Python BSD
14. Heiko Blobner 2926,775 8:55 Scala GPLV3
15. Thomas Pummer 2818,245 1:03 Python GPLv3
16. Dominik Bartenstein 2788,766 1:31 Python LGPLV3
17. Gymnasium Egg, 8bn 2730,113 0:58 Python LGPLv3
18. Gymnasium Egg, 6bn 2711,855 0:56 Python LGPLv3
19. Robert Knauer 2535,100 0:17 C++ GPLv2
20. Alexander Rampp 2388,842 3:20 Scala WTFPL

Wir gratulieren an dieser Stelle Philipp Staudinger, Christoph Staudinger und Horst Hettrich für die Belegung der ersten drei Plätze. Vor allem Platz 2 und 3 liegen sehr dicht beisammen. Wie man auch sieht, heißt langes Rechnen nicht auch zwingend, dass ein Bot besser ist als andere. Ebenso spielt die verwendete Sprache keine große Rolle.

Die detaillierte Auswertung mit den gemittelten Rundenzahlen pro Spielfeld und Teilnehmer kann separat als Open-Document-Tabelle (ODS) heruntergeladen werden. Die Log-Dateien der einzelnen Teilnehmer werden aufgrund der Größe von ca. 400 MB pro Teilnehmer (ungepackt, entspricht ca. 50 MB gepackt) nicht zum Download angeboten, können aber bei Interesse erfragt werden.

Ebenso gibt es natürlich den Quellcode aller Bots zum Download: Komplettarchiv (inkl. Engine, Inselfelder und aller Teilnehmer-Bots, 1652 KB).

Noch ein paar Hinweise:

  • Philipp und Christoph Staudinger haben uns versichert, sich nicht gegenseitig abgesprochen zu haben. Die Bots unterscheiden sich sowohl in Sprache als auch in ihrer Strategie.
  • Der Bot von M.Hummel und K.Kleine hat auf einer Insel leider die Rekursionstiefe von Python gesprengt, weswegen dort keine Punkte erzielt werden konnten.

In der nächsten Ausgabe von freiesMagazin sollen die Gewinner-Bots dann etwas näher vorgestellt werden.

Feedback

Wir freuen uns, dass der Wettbewerb so gut angenommen wurde und es so viele, teilweise altbekannte Teilnehmer gab. Dies motiviert uns, auch im Jahr 2013 wieder einen freiesMagazin-Programmierwettbewerb zu veranstalten. Vorausgesetzt natürlich wir haben eine Idee und die Zeit lässt es zu. Die Erstellung der Spiele-Engine und der grafischen Oberfläche sowie die Auswertung im Nachhinein ist auch immer mit viel Aufwand für uns verbunden.

Trotzdem oder gerade vielleicht deshalb sind wir auf das Feedback der Teilnehmer und Nicht-Teilnehmer gespannt. Was können wir verbessern? Wieso haben Sie z.B. nicht teilgenommen, obwohl Sie theoretisch gerne gewollt hätte? Sollen die Vorabergebnisse während der Einreichungsphase aller Teilnehmer auf der Webseite veröffentlicht werden, sodass man einen direkten Vergleich zu seinen Konkurrenten hat? Oder haben Sie eine Idee für den nächsten Wettbewerb? Schreiben Sie uns in den Kommentaren oder per E-Mail unter redaktion@freiesmagazin.de.