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:
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 [...]