Auswertung und Fazit Free-Hack Coding Contest 2017

By | 4. Mai 2017

Hiho!

Ich komme ein wenig spät mit diesem Artikel, aber sparen wollte ich ihn mir auch nicht. Die Auswertung des bereits vorgestellten Coding Contests auf Free-Hack ist nun abgeschlossen.

Die Auswertung:

Am Sonntag dem 23.04.2017 fanden sich alle Teilnehmer im eigenen Free-Hack Jabber-Server ein und die Auswertung wurde begonnen. Es wurden insgesamt 11 Matches (1 Match = 11 Runden) gespielt, wobei das 11te Match die Endrunde war. Mit dem Gewinnen eines Matches ist man automatich eine Runde weiter gekommen, wobei der Verlierer ausgeschieden ist. In einer Runde sind insgesamt 2 Teilnehmer gegeneinander angetreten. Der Server wurde von mir gehostet und auch alle Logs des Servers wurden zu nachträglichen Einsicht abgespeichert. Aufgrund der Tatsache, dass nicht allzu viele Teilnehmer vorhanden waren, war es möglich die Runden einzelnd und händisch zu starten und sofort per Chat auszuwerten. Das brachte ein wenig Spannung rein und machte die Sache lustiger.

Gratulieren konnten wir, dem auf Free-Hack registrierten User, „Easysurfer“, welcher am gleichen Tag noch seinen verwendeten Code auf den Git-Server von Free-Hack pushte. Seinen Gewinn nahm er dankend entgegen und sein Username strahlt seither in der gewünschten Farbe „gelb“. Mit Blick auf eine kleine Stellungnahme zu seinem Code hat er sich das auch verdient:

Danke erstmal für die Glückwünsche Hat echt Spass gemacht sich intensiver mit dem Thema auseinanderzusetzen ! An dieser Stelle natürlich auch nochmal ein Danke an Barny und J0hn für die Organisation! Für die nächsten Coding Conteste stelle ich mich auch gerne als Organisator/Helfer zu Verfügung

Der Code vom Bot ist inzwischen ins Repo gepusht. Ich werde noch ein paar Kommentare hinzufügen und die Test-Spieler auf ein einheitliches Level bringen, gibt also noch paar Commits.

Ich bin total gespannt auf deinen Code! Vielleicht schreibst du noch ein paar Zeilen darüber?

Ich hatte mehrere Ansätze die ich über seeeehr viele Simulationen und Tests evaluiert habe. Dabei habe ich stehts ein Feature in einen Spieler implementiert und diesen gegen den bisher besten Spieler antreten lassen. Schließlich hat sich „HumanStrategy9“ als bestes rausgestellt, knapp nach „HumanStrategy4c“ und „HumanStrategy6

Die wichtigste Erkenntnis war dabei: Wenn man die Möglichkeit hat eine Karte von Farbe X zu spielen oder eine Karte der Farbe Y zu spielen sollte man die Karte spielen wovon man weniger hat. Das scheint erstmal nicht logisch, hat sich aber in den Tests als besser rausgestellt:

Player 1 vs Player 2: 5402 vs 4598 =54.02%

mit der sonst gleichen Strategy.

Gegen einen Spieler welcher zufällig Karten legt und sich zufällig Farben wünscht hatte ich am Ende eine Gewinnrate von 72%. Dieser Wert war stehts mein Referenzwert wie gut der Spieler wirklich ist.
Über weitere Strategien wird es bald noch etwas auf meinem Blog geben.

Ein weitere Ansatz der leider nicht so viel Benefit gebracht hat war ein Suchbaum. Das Problem bei MauMau ist einfach die hohe Komplexität wenn man die Gegnerkarten nicht kennt. Daher macht ein solcher Suchbaum erst Sinn wenn man die Gegnerkarten auf ein Minimum einschränken kann bzw die eigene Hand so wenig Karten hält dass der Suchbaum einigermaßen Berechnenbar ist.
Dadurch war es auch möglich Situationen zu Erkennen die zu einem 100%igen Sieg führen, Beispielsweise:

Code:
TopCard: Karo 10
Player 1 Hand: Herz Bube, Karo 9
Player 2 Hand: [ALLE KARTEN AUßER Karo 7, Karo 8]

Dadurch dass Karo 7 und Karo 8 bereits gespielt worden können sich diese nicht in der Gegnerhand befinden. Wenn man zuerst den Bube mit Wunschfarbe Karo spielt kann man nicht mehr verlieren, wenn man als erstes allerdings die Karo 9 spielt ist noch ein Verlust möglich (wenn der Gegner darauf mit einem Bube Antwortet).
Solche Situationen ergeben sich auch wenn man viele 8ter auf der Hand hat und den Gegner mit „einem Zug“ besiegen kann ohne dass er Antworten kann.

Eine Suchbaumevalution durch eine Heuristik mit Suchbaumstufe 4 ist zwar implementiert, hat aber keinen wirklichen Vorteil gebracht (1-2% gegen Spieler ohne Heuristik).

Bei Fragen gerne stellen

Grüße

Fazit von mir:

Die Veranstaltung war, meiner Meinung nach, ein voller Erfolg. Die Organisation hat Spaß gemacht und die Teilnehmer waren zufrieden. Mit Blick auf den obigen Auszug habe ich mich auch sehr gefreut, dass sich Leute intensiver mit dem Thema beschäftigt haben. Vielleicht hat es auch den einen oder anderen dazu ermutigt mit dem Programmieren zu beginnen und lernt gerade fleißig für den nächsten Contest.

Ich bin ebenfalls glücklich, dass alles so reibungslos geklappt hat. Es war schließlich der erste Contest den ich in dieser Art organisiert habe. Bisher habe ich kein negatives Feedback bekommen, was mich auch das ermutigt in Zukunft weitere Contests zu veranstalten. Vielleicht spielen wir das nächste Mal „Mensch ärgere dich nicht“, „Dame“, „Schiffe versenken“, oder Ähnliches. Vorschläge habe ich schon einige erhalten und nehme auch gerne weitere entgegen.

An dieser Steller möchte ich mich dann nochmal bei allen Leuten bedanken, die mich unterstützt haben. Auch bei den Teilnehmern, die trotz kleinerer Fehler in der Serveranwendung nicht die Nerven verloren haben, sondern mir diese ganz souverän mitgeteilt haben, damit ich diese korrigieren konnte. Dankeschön!

Viele Grüße,

Barny

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

8 − 3 =