C'est mon 17e anniversaire et vous êtes invité à ma fête!
Et comme toujours aux soirées, il y aura du gâteau.
Un gâteau ...
Et vous en avez besoin autant que possible.
Comme il s’agit d’une fête équitable, chacun d’entre nous dira quelle part de mon gâteau nous voulons et la personne qui dit que le plus petit montant l’obtiendra. Ensuite, tout le monde doit répéter le processus jusqu'à ce que le gâteau soit parti.
Défi
- Étant donné l'entrée via des arguments de ligne de commande sous la forme
total-degrees degrees-left total-people people-left
, sortie vers la sortie standardinteger-bid-in-degrees
. - Si votre enchère était la plus basse, vous recevez cette quantité de gâteau et vous êtes éliminé.
- Si votre enchère n'était pas la plus basse, votre bot pourra enchérir sur le gâteau restant.
- Dans le cas où les offres les plus basses sont identiques, la personne renvoyée sera choisie au hasard.
- À la fin d'un tour, une fois que tout le gâteau est parti ou qu'il ne reste plus personne pour enchérir, la personne qui a le plus de gâteau gagne!
- À la fin d'un tour et si deux personnes ont la même tranche la plus grande, le gagnant est choisi au hasard parmi les entrées du tirage.
Gameplay
- Il y aura 17 manches, le vainqueur sera l’entrée avec le plus grand nombre de victoires.
- En cas d'égalité, les manches seront jouées jusqu'à ce qu'il y ait un gagnant clair.
- Chaque jour, je mettrai à jour les scores actuels afin que les personnes puissent mettre à jour leur saisie.
Soumission
Vous devriez écrire votre entrée comme
Nom du bot, langue
Insert Code Here
Explication / Aléatoire ici
Si votre entrée n'est pas formatée de cette manière, le contrôleur ne pourra PAS l'exécuter. Si je constate que cela est arrivé à votre entrée, je vous informerai dans un commentaire et / ou modifierai la réponse dans le format correct.
Votre entrée et stockage de fichiers
- Votre bot peut stocker des fichiers dans le
./data/
répertoire et nulle part ailleurs.- Non requis, mais stockez vos fichiers sous
botname*
- Vous ne pouvez pas écrire de fichiers dans ce format si ce
botname
n'est pas le nom de vos entrées. - Cela signifie que vous êtes autorisé à écraser d'autres fichiers que vous trouvez et qui n'apparaissent pas dans ce format. Vous ne devriez pas le faire délibérément, soyez sportif s'il vous plaît.
- Votre bot ne doit pas supposer que les fichiers dont il a besoin sont présents, mais il peut supposer qu'il
./data/
existe. - C’est parce que j’efface de temps en temps le
./data
répertoire, je le ferai quand les rondes commencent réellement. (Mais pas entre eux)
- Non requis, mais stockez vos fichiers sous
- Votre bot ne peut pas supprimer des fichiers du tout
- Votre bot est seulement autorisé à lire des fichiers dans le
./data/
répertoire- Cela signifie que vous pouvez regarder d'autres fichiers d'entrées
Résultats:
Meek a remporté le concours! Bien fait @ Cabbie407
Et maintenant, quelques statistiques aléatoires:
Une liste des positions de chaque bot est arrivée: (Bravo à tous les bot apparaissant dans cette liste, vous avez été dans le top 5 au moins une fois!)
Meek, Meek, Eidétique, Eidétique, Meek, Eidétique, Eidétique, Meek, Meek, Meek, Saucy, Meek, Givemethecake, Givemethecake, Givemethecake, Meek, Eidétique
Eidetic, Eidetic, Meek, AlCakeSurfer, Eidetic, AlCakeSurfer, Meek, MyFairPlusAThird, Eidetic, Eidetic, Eidetic, Eidetic, MyFairPlusAThird, MyFairPlusAThird, Meek, MyFairPlusATHurSurfer,
Reallythecake, AlCakeSurfer, AlCakeSurfer, Meek, AlCakeSurfer, Meek, AlCakeSurfer, AlCakeSurfer, Reallythecake, AlCakeSurfer, Meek, MyFairPlusThird, Eidétique, Eidétique, Eidétique, Eidétique, Reallythecake
AlCakeSurfer, Reallythecake, MyFairPlusAThird, MyFairPlusAThird, MyFairPlusAThird, MyFairPlusAThird, MyFairPlusAThird, Eidetic, Al-CakeSurfer, une réserve,
projet de loi, MyFairPlusAThird, projet de loi, projet de loi, projet de loi, Relinquisher, Relinquisher, MyFairPlusATird, fournisseur, projet de loi, Reallythecake, projet de loi, ALittleOffTheTop, ALittleOffTheTop, projet de loi
Le fichier de log complet pour la cometition en cours d'exécution peut être trouvé ici . Désolé pour le changement de format en cours de route.
Je ne lancerai plus le concours. Si vous souhaitez publier plus d'entrées, n'hésitez pas, le contrôleur se trouve sur mon dépôt Github pour ce concours .
{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']
,. Si votre bot a un score de 0, il fait quelque chose de mal.Réponses:
Meek, awk
J'ai vu cela une fois dans une simulation.
la source
Magicien, java
Le nombre 720 est magique.
C'esta été conçu pour tester le contrôleur etpasune entrée sérieuse.la source
Slim, Python 2
Ce bot est au régime.
la source
SadBot :(, C ++
Anciennement FairBot
FairBot veut juste une part égale :(
Il veut partager le gâteau de manière égale entre tous les participants.
(Il s'attend vraiment à ce que les autres robots lui volent parce qu'il sait qu'ils sont méchants)
(Comme vraiment. Il est seul, il veut juste que les autres robots l'aiment)
(Il vient de sortir d'une mauvaise relation et traverse une période très difficile, donc si vous pouviez lui donner une tape dans le dos et un sourire pour le faire sentir mieux, cela signifierait vraiment beaucoup.)
EDIT a changé de programme pour prendre argv / c à la place de stdin (le bot juste est toujours triste ...
la source
Halver, Ruby
Scrupuleusement, impeccable juste. La moitié du gâteau pour moi, la moitié du gâteau pour tout le monde.
la source
CharityBot, Python 2
Ajoute un autre gâteau au mélange!
(Le contrôleur verra ceci comme une demande de 0 gâteau, il n’ajoutera pas réellement à la taille du gâteau)
la source
Imitateur majestueux, Ruby
Variante de Imitator (si vous préférez une seule entrée par joueur, celle-ci remplace celle-ci). Garde une trace précise de la plus grande tranche déjà prise et offre toujours assez pour battre cette tranche. Ne sera également jamais offre inférieure à sa juste part du reste. Suppose qu'un répertoire './data' en lecture / écriture existe déjà; les fichiers peuvent être déjà présents ou non.
la source
Dieter, Java
Il ne veut pas enchérir pour un gâteau trop important, il choisit donc une tranche aléatoire, petite mais garantie .
la source
Scie à chaîne enflammée, Java
Avez-vous déjà essayé d'organiser un concours de découpage de gâteaux avec une scie à chaîne? Eh bien, maintenant vous avez. C'est plutôt perturbant.
la source
Monsieur, java
Il attend les gens qui mangent une part équitable ou moins avant de manger un gâteau. Pour éviter que le gourmand ne reçoive plus de gâteau, il en prend la plus grande portion possible.
la source
Bob Barker, Java
Cela va probablement être remplacé par une solution plus réfléchie plus tard, mais je suis curieux de savoir si cela fonctionnera. Ceci est juste pour attraper tous les robots qui essaient de maximiser, et faire une stratégie modifiée de Price is Right pour voler leur réponse. Cela pourrait conduire à une escalade avec des soustractions croissantes d’entiers, ce serait bien.
EDIT: l'escalade commence, le contre-affichage contre FloorBot
la source
args[1]
en int avant de faire la soustraction.Eidétique, Python 2
J'ai fait tourner ce robot dans le contrôleur à quelques reprises pour l'entraîner un peu, il se souvient des enchères nécessaires pour gagner chaque tour, puis une fois formé, il passe dans le monde réel et vote avec le reste d'entre eux.
la source
AlCakeBot, Python
Ceci est mon premier post PCG; J'espère que cela fonctionne comme prévu…
J'aime le gâteau. Peu importe quel genre. Mes collègues le savent. Et mon bot aussi. Si tout le gâteau est toujours là, il enchérira pour un peu moins de la moitié, dans l'espoir d'obtenir la plus grosse part immédiatement. Sinon, il devrait enchérir entre la moitié du gâteau restant et tout le gâteau restant, en utilisant un sinus carré comme fonction de pondération (
½ + sin² (fraction gone) / 2
). Le raisonnement étant qu'il devrait y avoir une chance pour une tranche globalement plus grande (mais légèrement plus petite) au début du jeu et qu'il n'y a également aucun intérêt à essayer d'être un gentleman en fin de partie.Puisque je ne suis pas très amateur de programmation, j'apprécierai toute erreur signalée. Maintenant, mangeons du gâteau = D
la source
Saucy, Ruby
Saucy est prêt à accepter un peu moins de la moitié du gâteau restant, à condition que ce soit plus que tout le monde a obtenu ou est susceptible de recevoir (sur la base de la sauce secrète).
la source
CoffeeJunkie, Coffeescript
Qu'est-ce qu'un gâteau sans une bonne tasse de café?
Le CoffeeJunkie préfère le café à une part de gâteau, mais souhaite néanmoins en goûter. Il sera toujours juste envers les autres participants et essaiera de se souvenir de ce qui est arrivé au dernier gâteau. Cependant, sa consommation excessive de café a affaibli ses souvenirs ...
la source
npm install -g coffee-script; coffee CoffeeJunkie.coffee
Sabotage majestueux, rubis
Ce bot a décidé que pour éliminer la compétition, elle ne devrait pas être sportive.
Ceci est un clone de Stately Imitator, sauf que celui-ci gâche les fichiers de persistance de Stately Imitator (car ils ne sont pas précédés du nom du bot), de sorte qu'il prend les mauvaises décisions et est choisi en dernier.
la source
Trader, R
Surveille l'évolution du rapport degrés gauche / personnes et lorsque ce rapport commence à baisser, il demande une tranche raisonnablement juste, sinon demande le reste du gâteau. Invoqué à l'aide
Rscript trader.r total-degrees degrees-left total-people people-left
.la source
IWMBAICBIWT, Python
IWMBAICBIWT (C'était mon anniversaire et j'ai pleuré parce que je voulais le faire) suppose qu'il existe une relation entre les degrés restants et le nombre de personnes restantes. Espérons que cela fonctionne!
Devrait fonctionner dans tous les Pythons.
Modifier:
Stocker des
sys.argv
entrées était un peu inutilela source
degreesleft = int(inputs[2]); peopleleft = int(inputs[4])
et il enchérit 1 tout le tempsinvité, Python 2
la source
facture, Python 2
Un pari juste.
la source
AlCakeSurfer, Python
Depuis que AlCakeBot a fait si mal (et je m'attends à ce qu'il fasse encore pire dans le concours), voici ma deuxième inscription. Je l'ai appelé surfeur, car il a une très bonne fonction de vagues qui le fait se sentir comme un surfeur.
En principe, il l' offre selon
cos² (x * pi)
, oùx
est la fraction de gâteau qui a été prise. Cette vague de surf est modifiée avec une fonction de pondération qui lui fait commencer avec une part inférieure à la moitié du gâteau, ramène ses enchères à un peu plus que la moitié du gâteau, puis se redresse rapidement. à enchérir pour le gâteau entier plus tard. Il ne fera jamais une offre inférieure à une part équitable du gâteau restant plus 5% (le pourcentage du gâteau entier).Notez que, bien qu’ils puissent être frères, s’il obtient une tranche beaucoup plus grande qu’AlCakeBot, celle-ci n’en reçoit même pas une miette. Ils partageraient du chocolat ou des biscuits, mais pas des gâteaux!
la source
Faim, java
Veut toujours sa juste part du gâteau restant.
la source
Imitateur, rubis
L'objectif est d'obtenir plus de gâteau que quiconque, pas pour maximiser votre gâteau. Ainsi, ce bot ne se contentera pas de moins que ce que les bots précédents avaient déjà pris. (Cette version utilise des méthodes heuristiques pour cette vérification, je viens de remarquer que nous sommes en fait autorisés à enregistrer l'état, je posterai donc probablement une variante avec état plus tard).
la source
Vraiment le gâteau, Bash
Et voici une photo du vrai gâteau.
la source
Mangeur de gâteaux, Java
Il mange un gâteau. C'est à peu près ça.
la source
Relinquisher, Java
Une variante de base de mon autre bot, Impatient. Celui-ci essaie de tout prendre au début, mais au fur et à mesure que de plus en plus d’invités obtiennent leur part, son désir d’obtenir le maximum possible diminue lentement. Je ne suis pas trop dans celui-ci; je veux juste voir à quel point il fait.
la source
ALittleExtra, sh
Je veux juste un peu plus, devient moins gourmand que le gâteau diminue
la source
MyFairPlusAThird, sh
la source
EatTheπ, Node.js
Aime vraiment π, et pense que le gâteau
veux direest π.la source
var totalπ=process.argv[2], πLeft=process.argv[3], totalPeople=process.argv[4], peopleLeft=process.argv[5];
pour que cela fonctionne avec le contrôleur. Il a obtenu 97 sur 3600 parmi 41 robots.Un peu en haut, Python 2
Puisque l'algorithme "parfait" tente de diviser le gâteau de manière égale entre les robots, nous allons prendre un morceau de moins que cela. Exige sa juste part de l’ensemble du gâteau, même lors des tours suivants, mais incline ce nombre à la hausse car il est basé sur le nombre de personnes qui restent.
Je n'ai pas programmé en Python depuis longtemps , alors laissez-moi savoir si mon code est cassé ...
la source