Es ist mein 17. Geburtstag und du bist zu meiner Party eingeladen!
Und wie immer auf Partys wird es Kuchen geben.
Ein Kuchen ...
Und du brauchst so viel wie möglich.
Da dies eine faire Party ist, wird jeder von uns sagen, wie viel von meinem Kuchen wir wollen, und die Person, die die kleinste Menge gesagt hat, wird es bekommen. Dann können alle anderen den Vorgang wiederholen, bis der Kuchen weg ist.
Herausforderung
- Bei Eingabe über Befehlszeilenargumente in Form von
total-degrees degrees-left total-people people-left
, Ausgabe in Standardausgabeinteger-bid-in-degrees
. - Wenn Ihr Gebot das niedrigste war, erhalten Sie diese Menge Kuchen und sind für die Runde aus.
- Wenn Ihr Gebot nicht am niedrigsten war, kann Ihr Bot auf den verbleibenden Kuchen bieten.
- Für den Fall, dass die niedrigsten Gebote gleich sind, wird die entfernte Person nach dem Zufallsprinzip ausgewählt.
- Am Ende einer Runde gewinnt die Person mit den meisten Kuchen, wenn der Kuchen verschwunden ist oder niemand mehr zum Bieten übrig ist!
- In dem Fall, dass am Ende einer Runde zwei Personen die gleiche Größe haben, wird der Gewinner nach dem Zufallsprinzip aus den Ziehungseinträgen ausgewählt.
Spielweise
- Es wird 17 Runden geben, der Gesamtsieger ist der Teilnehmer mit den meisten Gesamtsiegen.
- Bei einem Unentschieden werden Runden gespielt, bis ein klarer Gewinner feststeht.
- Jeden Tag aktualisiere ich die aktuellen Punktzahlen, damit die Benutzer ihren Eintrag aktualisieren können.
Einreichung
Sie sollten Ihren Eintrag als schreiben
Bot Name, Sprache
Insert Code Here
Erklärung / Zufälliges Zeug hier
Wenn Ihr Eintrag nicht auf diese Weise formatiert ist, kann der Controller Ihren Eintrag NICHT ausführen. Wenn ich feststelle, dass dies Ihrem Eintrag zugestoßen ist, werde ich Sie entweder in einem Kommentar benachrichtigen und / oder die Antwort im richtigen Format bearbeiten.
Ihr Eintrag und Dateispeicher
- Ihr Bot kann Dateien im
./data/
Verzeichnis und nirgendwo anders speichern .- Nicht erforderlich, aber bitte speichern Sie Ihre Dateien als
botname*
- Sie dürfen keine Dateien in diesem Format schreiben, wenn
botname
es sich nicht um Ihren Eingabenamen handelt. - Dies bedeutet, dass Sie andere Dateien überschreiben dürfen, die nicht in diesem Format angezeigt werden. Sie sollten dies nicht absichtlich tun, bitte seien Sie sportlich.
- Ihr Bot darf nicht davon ausgehen, dass die benötigten Dateien vorhanden sind, kann jedoch davon ausgehen, dass sie
./data/
vorhanden sind. - Das liegt daran, dass ich gelegentlich das
./data
Verzeichnis lösche. Dies werde ich tun, wenn die Runden tatsächlich beginnen. (Aber nicht zwischen ihnen)
- Nicht erforderlich, aber bitte speichern Sie Ihre Dateien als
- Ihr Bot löscht möglicherweise überhaupt keine Dateien
- Ihr Bot darf nur Dateien im
./data/
Verzeichnis lesen- Das heißt , Sie können bei anderen Einträgen Dateien suchen
Ergebnisse:
Meek hat den Wettbewerb gewonnen! Gut gemacht @ Cabbie407
Und nun zu einigen zufälligen Statistiken:
Eine Liste der Positionen, die jeder Bot eingenommen hat: (Gut gemacht, jeder Bot, der in dieser Liste auftaucht, hat mindestens einmal die Top 5 erreicht!)
Meek, Meek, Eidetisch, Eidetisch, Meek, Eidetisch, Eidetisch, Meek, Meek, Meek, Saucy, Meek, Givemethecake, Givemethecake, Givemethecake, Meek, Eidetisch
Eidetic, Eidetic, Meek, AlCakeSurfer, Eidetic, AlCakeSurfer, Meek, MyFairPlusAThird, Eidetic, Eidetic, Eidetic, MyFairPlusAThird, Meek, MyFairPlusAThird, AlCakeSurfer
Wirklich der Kuchen, AlCakeSurfer, AlCakeSurfer, Meek, AlCakeSurfer, Meek, AlCakeSurfer, AlCakeSurfer, Wirklich der Kuchen, AlCakeSurfer, Meek, MyFairPlusAThird, Eidetic, Eidetic, Eidetic, Eidetic, Reallythecake
AlCakeSurfer, Reallythecake, MyFairPlusAThird, MyFairPlusAThird, MyFairPlusAThird, MyFairPlusAThird, MyFairPlusAThird, Eidetic, AlCakeSurfer, MyFairPlusAThird, MyFairPlusAThird, Relinquisher, MyFairPlusathisher, Relin
Rechnung, MyFairPlusAThird, Rechnung, Rechnung, Rechnung, Rechnung, Relinquisher, Relinquisher, MyFairPlusAThird, Relinquisher, Rechnung, Reallythecake, Rechnung, ALittleOffTheTop, ALittleOffTheTop, Rechnung, Rechnung
Die vollständige Protokolldatei für den Wettkampf während des Laufens finden Sie hier . Tut mir leid, dass sich das Format zur gleichen Zeit geändert hat.
Ich werde den Wettbewerb nicht mehr durchführen. Wenn Sie weitere Einträge veröffentlichen möchten, können Sie dies gerne tun. Der Controller befindet sich auf meinem Github-Repo für diesen Wettbewerb .
quelle
{u'StatelyImitator': 719, u'Dieter': 4, u'Reallythecake': 0, u'Greedy': 0, u'Meek': 2, u'FlamingChainsaw': 0, u'Slim': 0, u'CharityBot': 0, u'Gentleman': 297, u'ALittleOffTheTop': 256, u'EatThe\u03c0': 0, u'Pig': 0, u'CakeEater': 330, u'BobBarker': 0, u'FloorBot': 5, u'Fatbot5000': 296, u'Moses': 360, u'Magician': 720, u'Hungry': 257, u'Imitator': 354} [u'Magician']
. Wenn Ihr Bot eine Punktzahl von 0 hat, stimmt etwas nicht.Antworten:
Sanftmütig, awk
Ich habe das einmal in einer Simulation gesehen.
quelle
Zauberer, Java
Die Zahl 720 ist magisch.
Dies
sollden Controller testen und istkeinernstzunehmender Eintrag.quelle
Schlank, Python 2
Dieser Bot ist auf Diät.
quelle
SadBot :(, C ++
Ehemals FairBot
FairBot will nur eine gleiche Portion :(
Er möchte den Kuchen gleichmäßig auf alle Teilnehmer verteilen.
(Er erwartet jedoch, dass die anderen Bots ihn verarschen, weil er weiß, dass sie gemein sind.)
(Wie wirklich. Er ist einsam, er möchte nur, dass die anderen Bots ihn mögen.)
(Er ist gerade aus einer schlechten Beziehung herausgekommen und durchläuft eine wirklich schwierige Phase. Wenn Sie ihm also einfach einen Klaps auf den Rücken geben und ihm ein Lächeln schenken könnten, damit er sich besser fühlt, würde das wirklich viel bedeuten.)
EDIT hat das Programm geändert, um Eingaben von argv / c anstelle von stdin zu übernehmen (fairer Bot ist immer noch traurig ... Er möchte seinen Namen in sadbot ändern (was irgendwie der Grund ist, warum er Kuchen will)
quelle
Halver, Rubin
Skrupellos, unanfechtbar fair. Die Hälfte des Kuchens für mich, die Hälfte des Kuchens für alle anderen.
quelle
CharityBot, Python 2
Fügt der Mischung einen weiteren Kuchen hinzu!
(Der Controller sieht dies als eine Aufforderung für 0 Kuchen an und erhöht die Größe des Kuchens nicht.)
quelle
Stattlicher Nachahmer, Ruby
Imitator- Variante (wenn Sie lieber nur einen Eintrag pro Spieler haben möchten, wird dieser ersetzt). Verfolgt genau das größte bereits genommene Slice und bietet immer genug, um dieses Slice zu schlagen. Wird auch nie niedriger bieten als sein gerechter Anteil am Rest. Es wird davon ausgegangen, dass bereits ein lesbares / beschreibbares Verzeichnis './data' vorhanden ist. Die Dateien können entweder bereits vorhanden sein oder nicht.
quelle
Dieter, Java
Es möchte nicht für zu viel Kuchen bieten, also wählt es eine kleine, aber garantierte zufällige Scheibe.
quelle
Flammende Kettensäge, Java
Haben Sie jemals versucht, einen Kuchenschneidewettbewerb mit einer Kettensäge durchzuführen? Nun, jetzt hast du. Es ist ziemlich störend.
quelle
Gentleman, Java
Er wartet auf Leute, die einen fairen Anteil oder weniger essen, bevor er einen Kuchen isst. Damit der Gierige keinen zusätzlichen Kuchen bekommt, nimmt er eine möglichst große Portion.
quelle
Bob Barker, Java
Dies wird wahrscheinlich später durch eine besser durchdachte Lösung ersetzt, aber ich bin gespannt, ob dies funktionieren wird. Dies dient nur dazu, alle Bots zu fangen, die versuchen, das Maximum zu erreichen, und eine modifizierte Price is Right-Strategie zu verfolgen, um ihre Antwort zu stehlen. Könnte mit zunehmenden Ganzzahl-Subtraktionen zu einer Eskalation führen, das wäre ordentlich.
EDIT: Eskalation beginnt, Gegenbuchung gegen FloorBot
quelle
args[1]
vor dem Subtrahieren in ein int konvertieren .Eidetic, Python 2
Ich habe diesen Bot ein paar Mal im Controller ausgeführt, um ihn ein wenig zu trainieren. Er erinnert sich an die Gebote, die für den Sieg jeder Runde erforderlich sind, und nach dem Training geht er in die reale Welt und stimmt mit den anderen ab.
quelle
AlCakeBot, Python
Dies ist mein erster PCG-Beitrag. Ich hoffe das klappt wie vorgesehen ...
Ich liebe Kuchen. Egal welche. Meine Kollegen wissen es. Und mein Bot auch. Wenn der gesamte Kuchen noch da ist, bietet er für knapp die Hälfte und hofft, das größte Stück sofort zu bekommen. Wenn nicht, sollte er für etwas zwischen der Hälfte des verbleibenden Kuchens und dem gesamten verbleibenden Kuchen bieten und einen quadratischen Sinus als Gewichtungsfunktion verwenden (
½ + sin² (fraction gone) / 2
). Die Überlegung ist, dass es zu Beginn des Spiels eine Chance für ein insgesamt größeres (aber etwas kleineres) Stück geben sollte und es wenig Sinn macht, im späten Spiel zu versuchen, ein Gentleman zu sein.Da ich mich nicht sonderlich mit Programmieren beschäftige, würde ich mich über jeden Fehler freuen, der darauf hingewiesen wird. Jetzt lass uns etwas Kuchen essen = D
quelle
Frech, Ruby
Saucy ist bereit, etwas weniger als die Hälfte des verbleibenden Kuchens zu akzeptieren, solange es mehr ist, als jemand anderes bekommen hat oder bekommen wird (basierend auf geheimer Soße).
quelle
CoffeeJunkie, Coffeescript
Was genau ist ein Kuchen ohne eine gute Tasse Kaffee?
Der CoffeeJunkie zieht Kaffee einem Stück Kuchen vor, möchte aber trotzdem etwas probieren. Er wird anderen Teilnehmern gegenüber immer fair sein und versuchen, sich zu erinnern, was mit dem letzten Kuchen passiert ist. Sein übermäßiger Kaffeekonsum hat jedoch seine Erinnerungen geschwächt ...
quelle
npm install -g coffee-script; coffee CoffeeJunkie.coffee
Stattliche Sabotage, Ruby
Dieser Bot entschied, dass es keinen Sport geben sollte, um den Wettbewerb auszuschalten.
Dies ist ein Klon von Stately Imitator, mit der Ausnahme, dass dieser die Persistenzdateien von Stately Imitator durcheinanderbringt (da ihnen nicht der Bot-Name vorangestellt ist), damit er die falschen Entscheidungen trifft und zuletzt ausgewählt wird.
quelle
Händler, R
Verfolgt die Entwicklung des Verhältnisses von links nach links und von links nach links. Wenn dieses Verhältnis abnimmt, wird nach einem angemessenen Stück gefragt, andernfalls wird der gesamte verbleibende Kuchen angefordert. Aufgerufen mit
Rscript trader.r total-degrees degrees-left total-people people-left
.quelle
IWMBAICBIWT, Python
IWMBAICBIWT (Es war mein Geburtstag und ich habe geweint, weil ich wollte) geht davon aus, dass es einen Zusammenhang zwischen den verbleibenden Abschlüssen und der Anzahl der verbleibenden Personen gibt. Hoffen wir, dass es funktioniert!
Sollte in allen Pythons funktionieren.
Bearbeiten:
Das Speichern
sys.argv
von Eingaben war etwas verschwenderisch ...quelle
degreesleft = int(inputs[2]); peopleleft = int(inputs[4])
und es bietet die ganze Zeit 1Gast, Python 2
quelle
Rechnung, Python 2
Eine faire Wette.
quelle
AlCakeSurfer, Python
Da sich AlCakeBot so schlecht geschlagen hat (und ich erwarte, dass er im Wettbewerb noch schlechter abschneidet), ist hier mein zweiter Beitrag. Ich habe ihn Surfer genannt, weil er eine sehr schöne Auf- und Ab-Wellenfunktion hat, mit der er sich wie ein Surfer fühlt.
Im Prinzip bietet er danach
cos² (x * pi)
, wox
der Bruchteil des Kuchens ist, der genommen worden ist. Diese Surfwelle wurde mit einer Gewichtungsfunktion modifiziert, die ihn dazu veranlasst, mit weniger als einem fairen Anteil weniger als der Hälfte des Kuchens zu beginnen, seine Gebote auf knapp über einen fairen Anteil zu reduzieren, wenn die Hälfte des Kuchens weg ist, und dann wieder schneller zu werden später für den gesamten Kuchen zu bieten. Er wird niemals weniger als einen angemessenen Anteil des verbleibenden Kuchens plus 5% (dh Prozent des gesamten Kuchens) bieten.Beachten Sie, dass sie vielleicht Brüder sind, aber wenn er ein wesentlich größeres Stück als AlCakeBot bekommt, bekommt dieser nicht einmal eine einzige Krume davon. Sie würden Schokolade oder Kekse teilen, aber keinen Kuchen!
quelle
Hunger, Java
Will immer seinen gerechten Anteil am restlichen Kuchen.
quelle
Nachahmer, Ruby
Das Ziel ist es, mehr Kuchen als jeder andere zu bekommen und nicht Ihren Kuchen zu maximieren. Daher wird sich dieser Bot nicht mit weniger zufrieden geben als die vorherigen Bots. (Diese Version verwendet Heuristiken für diese Prüfung. Ich habe gerade bemerkt, dass wir tatsächlich den Status speichern dürfen, daher werde ich wahrscheinlich später eine statusbehaftete Variante veröffentlichen.)
quelle
Wirklich der Kuchen, Bash
Und hier ist ein Bild des echten Kuchens.
quelle
Kuchen-Esser, Java
Es isst Kuchen. Das ist alles.
quelle
Relinquisher, Java
Eine grundlegende Variante meines anderen Bots, Ungeduldig. Dieser versucht zunächst, das Ganze zu verstehen, doch je mehr Gäste ihren Anteil daran haben, desto geringer wird der Wunsch, das Möglichste zu erreichen. Ich bin nicht zu sehr mit diesem beschäftigt. Ich will nur sehen, wie gut es funktioniert.
quelle
ALittleExtra, sh
Ich will nur ein bisschen mehr und werde weniger gierig, wenn der Kuchen nachlässt
quelle
MyFairPlusAThird, sh
quelle
EatTheπ, Node.js
Mag π wirklich und denkt an diesen Kuchen
meintist π.quelle
var totalπ=process.argv[2], πLeft=process.argv[3], totalPeople=process.argv[4], peopleLeft=process.argv[5];
, damit dies mit der Steuerung funktioniert. Es erreichte 97 von 3600 im Bereich von 41 Bots.Etwas abseits der Spitze, Python 2
Da der "perfekte" Algorithmus versucht, den Kuchen gleichmäßig auf die Bots aufzuteilen, werden wir nur ein Stück weniger nehmen. Fordert seinen vollen fairen Anteil am Gesamtkuchen, auch in den folgenden Runden, verzerrt diese Zahl jedoch nach oben, da sie davon abhängt, wie viele Leute übrig sind.
Ich habe nicht in Python in einer programmierten langen Zeit, so lassen Sie mich wissen , wenn mein Code gebrochen ist ...
quelle