Liar's Dice ist ein ziemlich einfaches Würfelspiel. Ich habe einige verschiedene Variationen der Regeln gesehen, aber hier ist die Version, mit der ich am vertrautesten bin:
- Jeder Spieler beginnt mit 5W6
- Außer wenn die Würfel am Ende einer Runde gezählt werden, kann jeder Spieler seine eigenen Würfel sehen, jedoch nicht die eines Gegners
- Zu Beginn einer beliebigen Runde würfeln alle Spieler mit den Würfeln, die sie gerade haben
- Dann ein Spieler (normalerweise ist dies entweder der Gewinner der vorherigen Runde ODER der Spieler links von dem Spieler, der das letzte Mal gestartet ist. Wir werden den ersteren für diese KotH verwenden. Ein zufälliger Spieler beginnt die erste Runde.) errät, wie viele von einer bestimmten Zahl auf dem Tisch sind (ONES ARE WILD)
- Das Bieten geht nach rechts weiter und wird jedes Mal höher (zum Beispiel: 3 Fünfer, 3 Sechsen und 4 Zweier sind alle höher als 3 Vierer, aber 3 Dreier sind nicht; 4 ist ebenfalls höher, aber das Bieten auf einen bringt Sie wahrscheinlich zu einem Nachteil); bis ein Spieler den vorhergehenden Spieler als Lügner bezeichnet
- Zu diesem Zeitpunkt decken alle Spieler ihre Würfel auf und zählen die Nummer des letzten auf den Tisch gebotenen Gebots
- Wenn die Summe niedriger als das Gebot ist, muss der Spieler, der das Gebot abgegeben hat, dem Spieler, der sie als Lügner bezeichnet hat, einen Würfel geben, ansonsten muss der Spieler, der den Bieter als Lügner bezeichnet hat, dem Bieter einen Würfel geben (damit der Bieter gewinnt) Wenn es mindestens so viele von dieser Zahl gibt, wie er geboten hat, muss es nicht die genaue Zahl sein.
- Wenn Sie keine Würfel mehr haben, verlieren Sie
- Der letzte Spieler gewinnt
Beispielsweise:
Spieler eins hat 1,1,2,4,6 Spieler zwei hat 1,2,2,3,5 Spieler drei hat 1,3,3,4,6 Spieler eins: drei Sechser. Spieler zwei: vier Zweien. Spieler drei: vier Dreien. Spieler eins: fünf Zweien. Spieler zwei: sechs Zweien. Spieler drei: sechs Dreien. Spieler eins: sechs Vierer. Spieler zwei: Lügner! Sie decken ihre Würfel auf und zählen die (weil die wild sind) und die Vierer. Es stellt sich heraus, dass es tatsächlich genau sechs Vierer gibt. Spieler zwei gibt Spieler eins einen Würfel. Sie wiederholen und Spieler eins beginnt die nächste Runde.
Sie müssen einen Bot schreiben, um dieses Spiel zu spielen. Es muss die folgende abstrakte Java-Klasse implementieren:
public abstract class Player {
public Player() {}
public String toString() {
return this.getClass().getSimpleName();
}
public abstract String bid(int yourId, int[] diceEachPlayerHas, int[] yourDice, String[] bids);
}
- Sie müssen die Bid-Methode implementieren
- Das erste Argument ist die aktuelle Position Ihres Bots in der Zugreihenfolge, das zweite ist ein Array, das angibt, wie viele Würfel jeder Spieler (einschließlich Sie selbst) aktuell hat, das dritte ist ein Array, das die aktuell auf Ihren eigenen Würfeln angezeigten Werte anzeigt, und das vierte ist Ein Array aller Gebote, die seit Beginn der aktuellen Runde abgegeben wurden, hat die Länge 0, wenn Sie das erste Gebot der Runde abgeben
- Die Ausgabe sollte entweder eine Zeichenfolge der Form "Zahlengesicht" oder die Zeichenfolge "Lügner!" den vorherigen Bieter als Lügner bezeichnen.
- Wenn Ihre Ausgabe illegal formatiert ist, werden Sie eliminiert.
- Sie können die toString-Methode überschreiben, müssen dies jedoch nicht. Sie dürfen sie jedoch nicht in einer Weise bearbeiten, die die Lesbarkeit der Controller-Ausgabe beeinträchtigt.
- Sie dürfen andere öffentliche Methoden des Controllers aufrufen, jedoch nicht dessen Hauptmethode.
- Sie können nur Dateien im laufenden Verzeichnis lesen und bearbeiten, denen der Name Ihres Bots vorangestellt ist
- Es ist Ihnen nicht gestattet, Eingaben von anderen Quellen zu übernehmen
- Instanzvariablen werden zu Beginn jedes neuen Spiels zurückgesetzt, statische Variablen jedoch nicht.
Wertung
- Jedes Mal, wenn ein Bot hinzugefügt wird (sobald drei oder mehr Bots eingereicht wurden), wird ein Satz von 1.000 Spielen mit jeweils 3-5 Spielern simuliert Holen Sie sich zu Beginn jedes Spielzugs 1, jedes Mal 10, wenn Sie einen Würfel erobern, und 1.000 Bonus, wenn Sie gewinnen. Erzwingen eines Limits von 5.000 TURNS (keine Runden) pro Spiel.
- Ihr Bot wird nach seiner Punktzahl aus der letzten Reihe von Spielen gewertet. plus das Zehnfache der Stimmenzahl, wenn nicht negativ. (Letzteres wird wahrscheinlich keinen signifikanten Einfluss auf die Punktzahl haben.)
Die Controller-Quelle finden Sie hier.
Stand vom 19.06.2015:
Badnomial: 434,924 + 6x10 = 424,984
Nobody: 282,329 + 6x10 = 282,389
StraightShooter: 265,205 + 5x10 = 265,255
MostlyHonestAbe: 158,958 + 4x10 = 158,998
The Pirate: 157,005 + 1x10 = 157,015
Statistician: 144,012 + 2x10 = 144,032
Fidelio: 49,973 + 2x10 = 49,993
Absurd Bot: 6,831
DrHouse: 2,638 + 3x10 = 2,668
popularity-contest
king-of-the-hill
java
SuperJedi224
quelle
quelle
diceEachPlayerHas[yourId]
= Ihre Würfel zählen undbids[yourId]
Ihr erstes Gebot ist (oder null, wenn Sie zum ersten Mal an der Reihe sind). Ist das korrekt?Antworten:
Niemand
Versucht, die Würfel anderer Spieler zu erraten. Ruft andere Bots als Lügner an, wenn sie nicht wissen, was sie tun sollen.
Bearbeiten: Es wurde ein Problem behoben, durch das niemand für immer bieten und niemals Lügner anrufen konnte.
quelle
Badnomial, der Bot, der basierend auf Binomialverteilungen schlechte Entscheidungen trifft: Bearbeiten: Ein dummer Fehler in den Wahrscheinlichkeitsberechnungen wurde nun sowohl den nächsten als auch den vorherigen Bieter berücksichtigt.
Anhand der geschätzten kumulativen Binomialverteilungen für sich selbst und der Chancen der vorherigen und nächsten Bieter, die benötigten Würfel zu haben, wird versucht zu bestimmen, ob sie bluffen oder Lügner nennen sollen.
Grundsätzlich nennt es Lügner, wenn der vorherige Bieter sehr wahrscheinlich ein Lügner ist oder wenn es das Gefühl hat, dass sowohl er als auch der nächste Bieter mit größerer Wahrscheinlichkeit lügen als nicht.
quelle
Straight Shooter
Er spielt es direkt und blufft nicht. Er ist auch naiv genug, um zu glauben, dass es auch andere tun, und ruft daher niemals einen Lügner an, es sei denn, das Gebot überschreitet die Gesamtzahl der Würfel im Spiel (abzüglich seiner eigenen Würfel, die dem Gebot nicht entsprechen).
Um ein bisschen konservativer zu sein als die genaue erwartete Anzahl für jeden Würfel, zählt er seine eigenen Wilds nicht, sondern geht davon aus, dass andere eine einheitliche Verteilung haben. Bei den aktuellen vier Spielern landeten entweder er oder MostlyHonestAbe jedes Mal auf dem ersten Platz und erzielten ziemlich gute Ergebnisse.
Ich gehe davon aus, dass das Mindestgebot ist
2 2
. Wenn ein Gebot für einen Würfel (oder ein Gebot für einen) zulässig ist, lassen Sie es mich wissen, damit ich diese Änderung vornehmen kann.quelle
MostlyHonestAbe
Abe lässt konservative Vermutungen über den Rest des Gegners sterben und bleibt dann ehrlich, bis er glaubt, dass es nicht genug Würfel gibt, um das aktuelle Gebot zu übertreffen. Zu diesem Zeitpunkt blufft er einmal und ruft dann beim nächsten Mal den Lügner an.
quelle
Dr. House
Jeder lügt!
quelle
Fidelio
Dieser Bot weiß, dass nur sein häufigster Wert ihn zum Sieg führt, also bleibt er dabei. Er geht davon aus, dass ein Teil der Würfel eines jeden gleich ist wie seiner. Wenn jemand mehr als diesen Teil bietet, geht er davon aus, dass er ein Lügner ist.
Ich hoffe er leistet gute Arbeit :).
quelle
Statistiker
Sie haben eine Chance von 1/3, eine andere Zahl als Asse zu haben. Ein Typ hat mir einmal gesagt, dass Sie dieses Spiel gewinnen können, wenn Sie Ihre Würfel nicht überprüfen und nur die Gewinnchancen kennen. EDIT: Es wurde zu hoch geboten. Aber es verbessert die Punktzahl nicht sehr.
quelle
Absurder Bot
Stellt die Behauptung auf, dass alle Würfel 6 sind, sofern dies nicht möglich ist. Wenn der Bot das nicht kann, bedeutet dies, dass dies eine unmögliche oder nahezu unmögliche Situation ist. Aus diesem Grund nennt es Lügner. Ich bin gespannt, wie effektiv dieser Bot sein wird.
quelle
Der Pirat
Ich habe ein paar einfache Bots gemacht, während ich den Controller getestet habe, und dies ist der einzige, der wirklich gut ist.
Wird wahrscheinlich später verbessert.
quelle