É meu aniversário de 17 anos e você está convidado para a minha festa!
E como sempre em festas, haverá bolo.
Um bolo ...
E você precisa o máximo possível.
Como esta é uma festa justa, cada um de nós dirá quanto do meu bolo queremos e a pessoa que disse que a menor quantidade conseguirá. Então todo mundo começa a repetir o processo até o bolo acabar.
Desafio
- Dada a entrada através de argumentos de linha de comando na forma de
total-degrees degrees-left total-people people-left
, saída para saída padrãointeger-bid-in-degrees
. - Se o seu lance foi menor, você recebe essa quantidade de bolo e sai para a rodada.
- Se o seu lance não foi mais baixo, seu bot poderá fazer lances no bolo restante.
- No caso de os lances mais baixos serem os mesmos, a pessoa removida será escolhida aleatoriamente.
- No final de uma rodada, uma vez que todo o bolo se foi ou não resta mais ninguém para oferecer, a pessoa com mais bolo vence!
- No caso de uma rodada e duas pessoas terem a maior fatia do mesmo tamanho, o vencedor é escolhido aleatoriamente nas entradas do desenho.
Jogabilidade
- Serão 17 rodadas, o vencedor geral será a entrada com mais vitórias no total.
- No caso de empate, as rodadas serão disputadas até que haja um vencedor claro.
- Todos os dias, atualizo as pontuações atuais para que as pessoas possam atualizar suas entradas.
Submissão
Você deve escrever sua entrada como
Nome do Bot, Idioma
Insert Code Here
Explicação / Coisas aleatórias aqui
Se sua entrada não estiver formatada dessa maneira, o controlador NÃO poderá executar sua entrada. Se eu descobrir que isso aconteceu com sua entrada, eu o notificarei em um comentário e / ou editarei a resposta no formato correto.
Sua entrada e armazenamento de arquivos
- Seu bot pode armazenar arquivos no
./data/
diretório e em nenhum outro lugar.- Não é necessário, mas armazene seus arquivos como
botname*
- Você não pode gravar arquivos nesse formato se
botname
não for o nome das entradas. - Isso significa que você tem permissão para substituir outros arquivos que não aparecerem nesse formato. Você não deve fazer isso deliberadamente, por favor, seja esportivo.
- Seu bot não deve assumir que os arquivos necessários estão presentes, mas pode assumir que
./data/
existe. - Isto é porque eu ocasionalmente limpar o
./data
diretório, que vai fazer isso quando as rodadas de realmente começar. (Mas não entre eles)
- Não é necessário, mas armazene seus arquivos como
- Seu bot não pode excluir arquivos
- Seu bot só pode ler arquivos no
./data/
diretório- Isso significa que você pode ver outros arquivos de entradas
Resultados:
Meek venceu o concurso! Bem feito @ Cabbie407
E agora, para algumas estatísticas aleatórias:
Uma lista de posições em que cada bot entrou: (Muito bem para qualquer bot que aparece nesta lista, você entrou no top 5 pelo menos uma vez!)
Manso, Manso, Eidético, Eidético, Manso, Eidético, Eidético, Manso, Manso, Manso, Picante, Manso, Givemethecake, Givemethecake, Givemethecake, Manso, Eidetic
Eidético, Eidético, Meek, AlCakeSurfer, Eidetic, AlCakeSurfer, Meek, MyFairPlusAThird, Eidético, Eidético, Eidético, Eidético, Eidético, MyFairPlusAThird, MyFairPlusAThird, Meek, MyFairPlusAThird, AlCakeSurfer
Reallythecake, AlCakeSurfer, AlCakeSurfer, Meek, AlCakeSurfer, Meek, AlCakeSurfer, AlCakeSurfer, Reallythecake, AlCakeSurfer, Meek, MyFairPlusAThird, Eidetic, Eidetic, Eidetic, Eidetic, Reallythecake
AlCakeSurfer, Reallythecake, MyFairPlusAThird, MyFairPlusAThird, MyFairPlusAThird, MyFairPlusAThird, MyFairPlusAThird, Eidetic, AlCakeSurfer, MyFairPlusAThird, MyFairPlusAThird, Relinquisher, Relinquisher, Relinquisher, Relinquisher, Relinquisher, Billin
bill, MyFairPlusAThird, bill, bill, bill, bill, Relinquisher, Relinquisher, MyFairPlusAThird, Relinquisher, bill, Reallythecake, bill, ALittleOffTheTop, ALittleOffTheTop, bill, bill
O arquivo de log completo para a cometição durante a execução pode ser encontrado aqui . Desculpe pela mudança de formato parcialmente.
Não voltarei a disputar o concurso. Se você quiser postar mais inscrições, poderá fazê-lo. O controlador pode ser encontrado no repositório do github deste concurso .
fonte
{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']
,. Se o seu bot tem uma pontuação de 0, está fazendo algo errado.Respostas:
Manso, awk
Eu vi isso uma vez em uma simulação.
fonte
Mágico, Java
O número 720 é mágico.
Esta
éfoi concebido para testar o controlador e énãouma entrada sério.fonte
Slim, Python 2
Esse bot está de dieta.
fonte
SadBot :(, C ++
Anteriormente FairBot
FairBot quer apenas uma parte igual :(
Ele quer dividir o bolo igualmente entre todos os participantes.
(Ele espera que os outros bots o enganem, porque ele sabe que eles são maus)
(Como realmente. Ele está sozinho, ele só quer que os outros bots gostem dele)
(Ele acabou de sair de um relacionamento ruim e está passando por um processo muito difícil, então se você pudesse dar um tapinha nas costas e um sorriso para fazê-lo se sentir melhor, isso realmente significaria muito.)
O EDIT mudou o programa para receber a entrada do argv / c em vez do stdin (o bot justo ainda está triste ... Ele quer mudar o nome para sadbot (que é por isso que ele quer bolo))
fonte
Halver, Ruby
Escrupulosamente, indiscutivelmente justo. Metade do bolo para mim, metade do bolo para todo mundo.
fonte
CharityBot, Python 2
Adiciona outro bolo à mistura!
(O controlador verá isso como uma solicitação de bolo 0, na verdade não será adicionado ao tamanho do bolo)
fonte
Imitador imponente, Ruby
Variante do Imitator (se você preferir apenas uma entrada por jogador, isso substitui essa). Mantém o controle preciso da maior fatia já obtida e sempre oferece lances suficientes para vencer essa fatia. Também nunca fará lances mais baixos do que sua parcela justa do restante. Supõe que um diretório de leitura / gravação './data' já exista; os arquivos podem já estar lá ou não.
fonte
Dieter, Java
Como não quer dar lances por muito bolo, escolhe uma fatia aleatória pequena, mas garantida .
fonte
Motosserra em chamas, Java
Você já tentou realizar um concurso de corte de bolo com uma serra elétrica? Bem, agora você tem. É bastante perturbador.
fonte
Cavalheiro, Java
Ele espera por pessoas que comem uma parte justa ou menos antes de comer qualquer bolo. Para impedir que o ganancioso consiga um bolo extra, ele pega a maior porção possível.
fonte
Bob Barker, Java
Provavelmente isso será substituído por uma solução mais pensada posteriormente, mas estou curioso para saber se isso funcionará. Isso é apenas para capturar todos os bots que tentam ir ao máximo e fazer uma estratégia modificada de Preço é Certo para roubar sua resposta. Pode levar a uma escalada com subtrações inteiras crescentes, isso seria legal.
EDIT: Começa o escalonamento, contra-lançamento contra o FloorBot
fonte
args[1]
para um int antes de fazer a subtração.Eidético, Python 2
Eu corri esse bot no controle algumas vezes para treiná-lo um pouco, ele se lembra dos lances necessários para vencer cada rodada e, depois de treinado, ele sai para o mundo real e vota com o resto deles.
fonte
AlCakeBot, Python
Este é o meu primeiro post no PCG; Espero que isso funcione conforme o esperado ...
Eu amo bolo. Não importa que tipo. Meus colegas sabem. E o meu bot também. Se o bolo inteiro ainda estiver lá, ele oferecerá pouco menos da metade, esperando obter a maior fatia imediatamente. Caso contrário, ele deve oferecer algo entre metade do bolo restante e todo o bolo restante, usando um seno quadrado como uma função de ponderação (
½ + sin² (fraction gone) / 2
). O raciocínio é que deve haver uma chance de uma fatia geral maior (mas fracionariamente menor) no início do jogo e também há pouco sentido em tentar ser um cavalheiro no final do jogo.Como não gosto muito de programação, aprecio qualquer erro apontado. Agora vamos comer um pouco de bolo = D
fonte
Saucy, Ruby
Saucy está disposto a aceitar um pouco menos da metade do bolo restante, desde que seja mais do que qualquer outra pessoa tenha conseguido ou possa obter (com base no molho secreto).
fonte
CoffeeJunkie, Coffeescript
O que exatamente é um bolo sem uma boa xícara de café?
O CoffeeJunkie prefere o café a uma fatia de bolo, mas, no entanto, quer experimentar. Ele sempre será justo com os outros participantes e tentará se lembrar do que aconteceu com o último bolo. No entanto, seu consumo excessivo de café enfraqueceu suas memórias ...
fonte
npm install -g coffee-script; coffee CoffeeJunkie.coffee
Sabotagem imponente, Ruby
Este bot decidiu que, para eliminar a competição, não deveria ser esportivo.
Este é um clone do Stately Imitator, exceto que este altera os arquivos de persistência do Stately Imitator (como eles não são prefixados com o nome do bot) para que ele tome as decisões erradas e seja escolhido por último.
fonte
Trader, R
Acompanha a evolução da proporção de graus à esquerda versus pessoas à esquerda e, quando essa proporção começa a diminuir, solicita uma fatia razoavelmente justa, caso contrário, solicita todo o bolo restante. Chamado usando
Rscript trader.r total-degrees degrees-left total-people people-left
.fonte
IWMBAICBIWT, Python
IWMBAICBIWT (era meu aniversário e eu chorei porque queria) assume que existe uma relação entre os graus restantes e o número de pessoas restantes. Vamos torcer para que funcione!
Deve funcionar em todos os Pythons.
Editar:
Armazenar
sys.argv
entradas era um pouco inútil ...fonte
degreesleft = int(inputs[2]); peopleleft = int(inputs[4])
e está oferecendo 1 o tempo todoconvidado, Python 2
fonte
projeto de lei, Python 2
Uma aposta justa.
fonte
AlCakeSurfer, Python
Desde que o AlCakeBot se saiu tão mal (e espero que ele seja ainda pior no concurso), aqui está minha segunda entrada. Eu o chamei de surfista, porque ele tem uma ótima função de onda para cima e para baixo que o faz se sentir como um surfista.
Em princípio, ele licita de acordo com
cos² (x * pi)
, ondex
está a fração do bolo que foi tomada. Essa onda de surf é modificada com uma função de ponderação que o leva a começar com menos de uma parcela justa, menos da metade do bolo, reduz seus lances para pouco acima de uma parcela justa quando a metade do bolo desaparece e depois acelera novamente para licitar o bolo inteiro mais tarde. Ele nunca oferecerá menos do que uma parte justa do bolo restante mais 5% (ou seja, por cento do bolo inteiro).Observe que, embora possam ser irmãos, se ele obtiver uma fatia significativamente maior do que o AlCakeBot, o último nem estará recebendo uma única migalha disso. Eles compartilhariam chocolate ou biscoitos, mas não bolo!
fonte
Com fome, Java
Sempre quer sua parte justa do bolo restante.
fonte
Imitador, Ruby
O objetivo é obter mais bolo do que qualquer outra pessoa, não maximizar seu bolo. Assim, este bot não se contentará com nada menos do que os bots anteriores já executados. (Esta versão usa heurísticas para essa verificação, notei que na verdade temos permissão para salvar o estado, então provavelmente postarei uma variante com estado posteriormente).
fonte
Realmente o bolo, Bash
E aqui está uma foto do bolo real.
fonte
Comedor de bolo, Java
Come bolo. É sobre isso.
fonte
Relinquisher, Java
Uma variante básica do meu outro bot, Impaciente. Este tenta entender tudo de início, mas, à medida que mais e mais convidados obtêm sua parte, seu desejo de obter o máximo possível diminui lentamente. Eu não sou muito interessado nisso; só quero ver o quão bem ele faz.
fonte
ALittleExtra, sh
Eu só quero um pouco mais, fica menos ganancioso à medida que o bolo diminui
fonte
MyFairPlusAThird, sh
fonte
EatTheπ, Node.js
Gosta muito de π e pensa que bolo
significaé π.fonte
var totalπ=process.argv[2], πLeft=process.argv[3], totalPeople=process.argv[4], peopleLeft=process.argv[5];
para fazer isso funcionar com o controlador. Obteve 97 dos 3600 no campo de 41 bots.Um pouco fora do topo, Python 2
Como o algoritmo "perfeito" tenta dividir o bolo igualmente entre os bots, levaremos apenas um pouco menos que isso. Exige sua parcela justa e total do bolo geral, mesmo nas rodadas subsequentes, mas inclina esse número para cima, pois é baseado em quantas pessoas restam.
Eu não tenho programado em Python há muito tempo, então deixe-me saber se meu código está quebrado ...
fonte