Gewinner des vierten Programmierwettbewerbs

Der vierte Programmierwettbewerb von freiesMagazin wurde am 30. November 2011 beendet. Letzte Woche traten die 26 Bots gegeneinander an und die drei Gewinner konnten bestimmt werden.

Das komplette Spiel, bei dem die 26 Bots jeweils nacheinander gegen alle anderen antraten, wurde 100 Mal wiederholt, um den Zufall etwas kleiner wirken zu lassen. Dabei hat sich aber gezeigt, dass es pro Spiel nur ganz wenige Unterschiede gab. Die Platzierung der einzelnen Bots blieb so gut wie immer gleich und unterschied sich nur, wo zwei Bots eh sehr dicht beieinander lagen.

Für die unten stehenden Tabelle wurden die Gesamtpunktezahl aus den 100 Wiederholungen durch 100 geteilt, um den Mittelwert für ein Spiel zu erhalten, was dann die Basis für die Siegprämie sein sollte.

Ergebnisliste (Durchschnitt aus 100 Wiederholungen)
Platz Bot Plus Minus
1. Mathias Nerce 117268002 110811478
2. Maximilian Schnarr 111739494 115555776
3. Tom Richter 106932274 106143296
4. Werner Ziegelwanger 104741504 81346386
5. Nick Frank 103911138 111572212
6. Lüko Voß 101135373 91140177
7. Christian Deussen 99474532 121560168
8. Ingo Steiniger 98446440 114601330
9. Claus Schrammel 94548317 99204653
10. Georg Kindermann 92404842 90987428
11. Mario Fuest 92295289 103566441
12. Manuel Unglaub 88775040 83709200
13. Max Großmann 87792816 94080034
14. Christian Schudoma 87629593 99253387
15. Andreas Ziegelwanger 87569973 105606867
16. Christoph Thieme 87378294 67634676
17. Felix Passenberg 84244017 43963523
18. Sebastian Wagner 84184939 103517951
19. Jonas Offtermatt 83481765 71422445
20. Michael Munzert 79290965 74867955
21. Michael Schulz 78852386 70481314
22. Moritz Reinhardt 77915952 80338328
23. Jan Bastian 76393834 58739876
24. Frank Stähr 68976812 114925088
25. Lehtis 63161325 35709915
26. Stefan Morgenthaler 44820771 52625789

Wir gratulieren damit Mathias Nerce, Maximilian Schnarr und Tom Richter zu den ersten drei Plätzen. Wie man aber sieht, ist das Feld auch danach noch stark zusammengereiht und fällt nur langsam ab.

Angedacht war, dass die ersten drei Plätze einen Amazon-Gutschein im Wert von P / ( 20.000·(N−1) ) erhalten, wobei P die erzielten Pluspunkte sind und N die Anzahl der Teilnehmer am Wettbewerb sind. Da die Formel aber nachträglich angepasst wurde (es wurde ursprünglich einmal zu viel durch N geteilt), wurde vergessen, die Konstante 20.000 entsprechend nach unten zu korrigieren, sodass diese nun auf 120.000 festgelegt wird.

Das bedeutet also, dass die ersten drei Teilnehmer folgendes Preisgeld in Form eines Gutscheins erhalten:

Platz Bot Gutschein-Wert
1. Mathias Nerce 39,09 Euro
2. Maximilian Schnarr 37,25 Euro
3. Tom Richter 35,64 Euro

Noch einmal herzlichen Glückwunsch an die drei Gewinner, wobei wir uns natürlich auch bei allen anderen Teilnehmern bedanken wollen, die den Wettbewerb mit der regen Teilnahme so spannend gemacht haben.

Die einzelnen Ergebnisse der Spiele können als Archiv heruntergeladen werden, sodass sich auch jeder genau ausrechnen kann, welcher Bot wie viele Spiele gegen einen bestimmten anderen gewonnen hat:

Download der Spielergebnisse

Die einzelnen Strategien der Bots werden in der nächsten Ausgabe von freiesMagazin kurz erläutert. Da der Code der Bots jeweils unter einer freien Lizenz verfügbar ist, können diese vorab schon heruntergeladen, getestet und analysiert werden:

Komplettarchiv (inkl. Engine und aller Teilnehmer-Bots)

Wir freuen uns, dass so viele Menschen am vierten freiesMagazin-Wettbewerb teilgenommen haben und werden nächstes Jahr sicherlich wieder einen anbieten. Die Aufgabe wird dabei ähnlich simple gehalten werden, da wir gesehen haben, dass bei zu anspruchsvollen Aufgaben sowohl die Einarbeitung in die Aufgabe als auch die Umsetzung der Lösung einfach zu aufwändig ist.

Eine Idee zu einer neuen Aufgabe haben wir im Übrigen schon, es können aber auch Vorschläge an für einen Wettbewerb über die Kommentare oder die Kontaktseite einsenden. Auch Kritik, Anregungen und Meinungen zum vierten Wettbewerb werden gerne entgegengenommen.

Pingback

[...] gestartet. Nun wurden die Gewinner ermittelt und die Ergebnisse können auf der Webseite des Magazin eingesehen werden. Nächsten Monat gibt es dann eine ausführliche Kurzvorstellung der einzelnen [...]

An die Redaktion

Danke nochmal für den gut organisierten Wettbewerb. Hat viel Spaß gemacht.

Was mich besonders stolz

Was mich besonders stolz macht, ist die gute Platzierung zweier junger Teilnehmer. Ich habe selbst am Wettbewerb nicht teilgenommen (für die Statistik: nicht genügend Freizeit), darf die beiden Jungs aber sonst in der Schul-AG betreuen. Ihre Bots haben sie komplett selbst geschrieben, gegeneinander erprobt, die Teilnahme selbst organisiert, ohne jeglichen Tipp von mir. Und ein 5. und 6. Platz sind für Neuntklässler in einem Feld von vermutlich ansonsten Erwachsenen mit etwas mehr Programmiererfahrung doch spitzenmäßig! Applaus!

Wenn ich nun einem anderen Nachswuchstalent Unrecht getan habe, bitte ich um Verzeihung.

An dieser Stelle vielleicht gleich ein Wunsch für den nächsten Wettbewerb: Ich fände es gut, wenn fertige Software wie in diesem Fall der Spieleserver betriebssystemunabhängig wäre. Unter Linux funktioniert er ja prima, aber auf anderen "weitverbreiteten Systemen" eben nicht. Selbst mit Cygwin oder MSYS ging es für mich nicht... Ich habe dann kurzerhand für die beiden eine minimierte Java-Version erzeugt.

Re: Was mich besonders stolz

Hallo Herr Wenzel,

bzgl. der Betriebssystemunabhängigkeit: C++ ist ja betriebssystemunabhängig und ich hätte eigentlich angenommen, dass auch Pipes unter Windows funktionieren. Wie funktioniert denn die Kommunikation bei der Java-Version? Es würde mich ja etwas wundern, wenn es mit Java geht, aber mit C++ nicht (was aber natürlich dennoch sein kann). Die aktuelle Umsetzung über Pipes ist das für (Linux-)Teilnehmer bisher einfachste Konzept, was ich auch gerne in Zukunft gerne beibehalten würde.

Dominik Wagenführ
freiesMagazin-Redaktion

Moin, Dominik. Meinetwegen

Moin, Dominik.

Meinetwegen können wir uns auch duzen... dann fühle ich mich nicht so alt.

Den originalen Server habe ich unter Win2K mit Cygwin und unter Win7-64 mit MSYS ausprobiert, das sind Nicht-Linux-Systeme, auf die ich schnell Zugriff hatte. Cygwin mochte zwar die Aufrufe, konnte aber keine Pipes anlegen. Und MSYS mochte schon die speziellen Umleitungen nicht und hatte kein mkfifo implementiert. Oder so, es ist ein bisschen her. Entschuldige bitte die ungenaue Fehlerbeschreibung.

Die Lösung mit Java hat nichts mit der Sprache zu tun, ich habe sie mehr als Anschauungsobjekt für die Schüler und der Einfachheit halber gewählt. Der Server bekommt die Kommandozeilen der Botaufrufe als Argumente übergeben, wie das Skript. Das kann bei dieser Gelegenheit eigentlich auch eingespart werden, aber für den einfacheren Aufruf gab es dann doch eine einzeilige Stapelverarbeitungsdatei.

Aber anstelle die Shell die Botprozesse und die Ein- und Ausgabeströme erzeugen zu lassen, habe ich Objekte der Klasse "Process" benutzt. Mit unprofessionell minimalistischer und fehlerhafter Fehlerbehandlung sieht die Sache dann so aus:

try {
    process = Runtime.getRuntime().exec(command);
} catch (Exception e) {
    process = null;
}
stdOut = new BufferedReader(new InputStreamReader(process.getInputStream()));
stdIn = new PrintWriter(process.getOutputStream(), true);

Dieses Verfahren funktioniert auch beim Redmonter Betriebssystem gut und kann sicher in jeder höheren Programmiersprache implementiert werden.

Fröhliche Weihnachten (gehabt zu haben) und ein gutes neues Jahr!
Bodo

Re:

Hallo Bodo,

okay, dank des Beispiels habe ich es verstanden. Du überlässt die Prozessverwaltung also nicht der Shell, weil das unter Windows nicht klappt, sondern steuerst die Prozesse aus der Engine selbst, sprich in Deinem Fall Java, in meinem Fall wohl eher C++. Ob wir das beim nächsten Wettbewerb so machen, kann ich Dir noch nicht versprechen. Das hängt wohl auch davon ab, in wie weit C++ da eine Unterstützung liefert. Ich selbst werde die Prozessverwaltung wie im dritten Wettbewerb nicht noch einmal programmieren. Das schöne an der Shell-Lösung war eben, dass ich mich um so gut wie nichts kümmern muss. Das heißt auch nicht um das Buffern, das korrekte Auslesen, Versenden, warten auf die Clients etc.

Viele Grüße
Dominik

Ist ein Amazon-Gutschein

Ist ein Amazon-Gutschein wirklich das richtige Signal für ein "freies Magazin"?

Re: Ist ein Amazon-Gutschein

Früher gab es mal Gutscheine von Bookzilla. Die Gewinner fragten dann nach Gutscheinen für Amazon. Die Teilnehmer dürfen sich aber gerne Gutscheine von anderen Anbietern wünschen. Ob wir die Wünsche erfüllen können, steht auf einem anderen Blatt.

(Gibt es eigentlich noch einen Anbieter, der keinen Dreck am Stecken hat? Mir fällt zumindest zu Bookzilla, Libri, Amazon, Thalia und Weltbild etwas ein.)

Pingback

[...] Damit liegt die Teilnehmerzahl hinter denen der letzten beiden Wettbewerbe aus 2012 mit 20 bzw. 2011 mit 26 Teilnehmern. Auch die verwendeten Sprachen konzentrierten sich dieses Mal auf C++ (4), Java [...]