Homem das cavernas louco. Outro homem das cavernas pega pau, mas pau era para mim. Luta do homem das cavernas !
Descrição
Homem das cavernas precisa de uma vara afiada para esfaquear outro homem das cavernas. Outro homem das cavernas também tenta esfaquear com uma vara afiada. O homem das cavernas pode afiar o bastão, cutucar com o bastão ou bloquear palitos enfiados.
Se um homem das cavernas cutucar outro homem das cavernas com uma vara afiada, outro homem das cavernas foge e me ganha. Mas se outro homem das cavernas bloquear com inteligência quando eu cutucar, nada acontecerá, a não ser que meu pau fique embotado e eu precise afiar novamente.
Homem das cavernas preguiçoso. Além disso, homem das cavernas burro. O homem das cavernas não sabe o que fazer, portanto, o homem das cavernas precisa de um programa de computador techno sofisticado para dizer ao homem das cavernas o que fazer.
Entrada
A entrada do seu programa será uma história dos eventos que aconteceram, onde S
significa afiar (ou seja, o homem das cavernas afiou o graveto), P
significa cutucar e B
significa bloquear. A entrada será um histórico de ambos os lados (você e o oponente); portanto, os movimentos do seu e do oponente serão separados por vírgula ( ,
).
Exemplo de entrada:
SPB,SBB
Isso significa que o jogador afiou o taco, depois cutucou, bloqueou e o oponente afiou, bloqueou e bloqueou novamente.
Você não receberá nenhuma entrada no turno 1.
Resultado
A saída é muito semelhante à entrada (porque o homem das cavernas não é muito inteligente). Seu programa deve ser exibido S
para nitidez, P
cutucada e B
bloco. Somente o primeiro caractere da saída será levado em consideração e qualquer outra entrada será tratada como um B
comando (bloco).
S
: afiarAo afiar, a nitidez do bastão do homem das cavernas aumenta em 1 e o bastão recebe 1 cutucada extra. Cada puxão reduz a nitidez do bastão em 1 e se a nitidez do bastão é 0, é muito chato para mexer. A nitidez começa em 0. Se a nitidez chegar a 5, o bastão é uma espada! (Ver abaixo.)
Se o oponente cutucar enquanto você está afiando (e tem nitidez> 0), o oponente vence!
P
: cutucarAo cutucar, a nitidez do bastão do homem das cavernas diminui em 1 e você cutuca o seu oponente! Se seu oponente está afiando, você ganha! Se o oponente estiver cutucando, seu taco bate no taco do oponente e os dois ficam mais opacos (por 1 "unidade de nitidez"). Se o oponente estiver bloqueando, nada acontece, exceto que seu taco fica mais tedioso.
Se você cutucar quando a nitidez do seu bastão for 5 ou maior, ele se tornará uma espada e você sempre vencerá! (A menos que seu oponente também tenha uma espada e também escolha
P
; nesse caso, ambos ficam mais opacos e podem reverter para paus se a nitidez cair abaixo de 5.)Você não pode cutucar com uma nitidez de 0. Se o fizer, nada acontecerá.
B
: quadraQuando você bloqueia, nada acontece quando seu oponente cutuca. Se seu oponente não estiver cutucando, o bloco não fará nada.
O bloqueio não protege contra uma espada, mesmo que você também tenha uma!
Regras e restrições
Regras adicionais são:
- Seu programa pode ler e gravar arquivos em sua própria pasta (sem roubo!) Se você quiser salvar dados, mas não puder acessar nada fora dele (e os homens das cavernas não têm conexão com a Internet no deserto).
- Nota importante sobre os arquivos : Se você salvar os arquivos, lembre-se de salvá-los no diretório
players/YourBotsName/somefile.foo
! O diretório de trabalho atual do seu programa não será do seu programa!
- Nota importante sobre os arquivos : Se você salvar os arquivos, lembre-se de salvá-los no diretório
- Homens das cavernas são justos: um programa não pode ter código específico para outro programa, e os programas não podem ajudar um ao outro. (Você pode ter vários programas, mas eles não podem interagir de forma alguma.)
- O juiz do homem das cavernas não é paciente. Se os homens das cavernas fizerem mais de 100 turnos cada um para decidir um vencedor, o juiz ficará entediado e os dois homens das cavernas perderão.
Se o seu programa infringir uma regra ou não seguir a especificação, o programa será desqualificado, removido playerlist.txt
e todos os duelos serão reiniciados desde o início. Se o seu programa for desqualificado, o líder do homem das cavernas (eu!) Comentará a postagem do programa e explicará o motivo. Se você não está infringindo nenhuma regra, seu programa será adicionado à tabela de classificação. (Se o seu programa não está na tabela de classificação, não há comentários explicativos na sua postagem e você postou seu programa antes da hora da "Última atualização" abaixo, informe ao líder do homem das cavernas! Talvez ele tenha esquecido.)
Na sua postagem, inclua:
- Um nome.
- Um comando shell para executar o seu programa (ex.
java MyBot.java
,ruby MyBot.rb
,python3 MyBot.py
, Etc.).- Nota: a entrada será anexada a isso como um argumento de linha de comando.
- Os homens das cavernas usam o Ubuntu 14.04, portanto, verifique se o seu código funciona (livremente) nele.
- Um número de versão, se o seu código funcionar de maneira diferente em versões diferentes do idioma escolhido.
- Seu código (obviamente).
- Como compilar o código, se necessário.
Código / teste do controlador, exemplo bot
O líder do homem das cavernas escreveu o código de controle em C ++ e o publicou em um repositório do Github . Você pode executar e testar seu programa lá.
Um programa muito, muito simples (1 linha!) Também é publicado nas respostas abaixo .
Pontuação e placar
Marcar é fácil. Qualquer que seja o homem das cavernas, ganha um ponto. O homem das cavernas com mais pontos após 3 duelos contra todos os outros homens das cavernas se torna o novo líder das cavernas!
150 Watson
147 SpeculativeSylwester
146 Gruntt
141 BashMagnon
126 ChargerMan
125 PrisonRules
124 ViceLeader
122 MultiMarkov
122 CaveDoctor
120 RegExMan
120 Hodor
117 FancyTechnoAlgorithm
116 Semipatient
113 Watcher
108 BobCaves
105 MinimaxMan
104 Oracle
102 MaybeMarkov
97 Nash
95 Sicillian
95 Feint
95 Basilisk
94 SharpMan
93 Darwin
91 Nigel
91 JavaMan
88 Entertainer
88 CarefulBot
85 CaveMonkey
84 SSBBP
82 SirPokealot
79 MasterPoker
77 Unpredictable
76 IllogicalCaveman
75 SharpenBlockPoke
75 HuddleWolfWithStick
72 WoodenShield
68 PokeBackBot
68 PatientBlacksmith
66 PatientWolf
58 MonteCarloMan
58 BlindFury
56 BinaryCaveman
55 PokeBot
55 CavekidBlocks
53 Swordmaster
53 Blocker
52 NakedEarlyNerd
52 ModestCaveman
50 LatePokeBot
40 Trickster
39 SwordLover
38 ForeignCaveman
36 Swordsmith *
28 Touche
27 WantASword
27 FoolMeOnce
24 PeriodicalCavemanCicada
11 Aichmophobic
(este placar foi gerado automaticamente)
Jogadores marcados com um *
lançaram algum tipo de erro ou exceção em algum momento; esses jogadores também têm um comentário em suas postagens.
Os jogadores que não puderam ser incluídos nos testes por qualquer motivo (estes jogadores terão um comentário sobre as suas mensagens explicando o problema): Monkey
, Elephant
, FacileFibonacci
, StudiousSylwester
.
Última atualização: 3 de agosto às 00:15 (UTC).
fonte
Respostas:
Darwin - C
Quem precisa de estratégia, afinal? Peça a um grupo de homens das cavernas que se aproximem e deixe a seleção natural fazer o resto!
Usamos um modelo muito simples para descobrir o cérebro primitivo do homem das cavernas: ele não tem memória e leva em consideração apenas a nitidez do bastão dele e de seu oponente. Essas são usadas como variáveis para um polinômio binário de alguma ordem finita. Cada ação (bloco, nitidez e puxão) possui um polinômio associado cujo resultado determina a probabilidade relativa de escolher essa ação. Isso é praticamente tudo o que existe - comece com alguns coeficientes aleatórios e otimize iterativamente.
O bot:
Compilar com:
gcc darwin.c -odarwin -w -O3
. Corra com:./darwin <history>
.O bot lê os coeficientes de um arquivo nomeado
program
noplayers/Darwin
diretório (um arquivo diferente pode ser especificado como um segundo argumento da linha de comando). Este programa parece se sair bem:Salvar como
players/Darwin/program
.A seguir está um programa que gera
program
arquivos que podem ser usados pelo bot (não precisa ser compilado se você usar oprogram
arquivo acima):Compilar com:
gcc genprog.c -ogenprog -w -O3
. Corra com:./genprog [output-filename]
.Watson
Qual é o DNA de um homem das cavernas vencedor? Talvez esse cara tenha a resposta:
Correr com:
python Watson.py
Watson é o produto de um algoritmo genético. Ao contrário de Darwin, o dado genético desta vez é um programa real, escrito em uma pequena linguagem específica de domínio (aqui traduzida para Python).
Sequência simples vence grandes jogadores
Esse amiguinho se sai surpreendentemente (ou talvez não tão surpreendentemente), especialmente contra os líderes:
Correr com:
python SSBBP.py
fonte
players/Darwin
diretório.undefined reference to `fmax'
. --Edit-- Não importa, eu realmente precisava-lm
.Homem das cavernas imprevisível
Esse homem das cavernas escolhe aleatoriamente a cada rodada, mas expliquei a ele com muita simplicidade que certas ações simplesmente não fazem sentido às vezes. Sinta-se livre para copiar esse código se desejar expressar uma lógica diferente.
Este é Ruby, salve como 'imprevisível.rb' e execute com
ruby unpredictable.rb
fonte
no 'Block'
também deve ser se meu oponente tiver uma espada.unless
as declaraçõesno 'Block'
eno 'Poke
'? (no 'Block' unless he.has_pointy_stick
)Cave Doctor - Lua
"Eu perco para novos estrangeiros, nocauteei-os para estudá-los"
Quando você vê tantos pacientes quanto o médico da caverna, começa a entender verdadeiramente a psique do homem das cavernas (ou pelo menos espero). O jogo do médico da caverna é pura estratégia, ele espera cutucadas que ele bloqueia na tentativa de desarmar seu oponente, mas não deixa que esse oponente se aproxime de fazer uma espada. Ele tenta prever quando é seguro afiar para não perder a vantagem.
Correr com:
lua CaveDoctor.lua
fonte
ForeignCaveman
ForeignCaveman não faz ideia do que você acabou de dizer. Ele apenas ... faz coisas.
javac ForeignCaveman.java
entãojava ForeignCaveman
fonte
Vice líder
Maçaneta da porta ♦ é líder. Eu quero ser líder! Siga o programa super inteligente para se tornar líder!
Compilar:
javac ViceLeader.java
Executar:java ViceLeader
.fonte
if (enemySharpness <= 4 || mySharpness >= 5)
vs==
?Talvez Markov 2.1
Acho que ele usa cadeias de Markov para prever o que o outro homem das cavernas fará, mas apenas olhei brevemente a página da Wikipedia sobre cadeias de Markov e decidi que tinha muito texto.
Ele tenta permanecer vivo por 30 rodadas e, em seguida, constrói uma mesa com as atuais mudanças de estado atuais e reage ao que pensa que o outro homem das cavernas fará.
O código contém muitas instruções desnecessárias, mas funciona muito bem.
EDITAR
Detectou uma falha na lógica. Agora ele realmente faz alguma coisa quando tem uma espada.
$ python3 players/MaybeMarkov/MaybeMarkov.py
fonte
PeriódicoCicadaCaveman
Este homem das cavernas bastante inteligente estudou um certo bug e percebeu que ninguém pode ajustar seu estilo de vida para aproveitar o número primo da cigarra.
Esconde / bloqueia a maior parte da vida, mas ocasionalmente cutuca. Claro que é vulnerável às Espadas e passa um ciclo inteiro com um graveto não afiado, mas afiando-o quando é totalmente sem corte? Isso é exatamente o que os outros esperam dele ... não esta cigarra
compilar: mcs program.cs para executar o mono program.exe
Edit: Alterou o código sharpness-- ... se eu cutucar ou ganhar ou meu pau ficar mais tonto
Edit2: Adicionado na sugestão de Bobs
Edit: Alterado para cutucar apenas quando estiver com nitidez 2, se o pau estiver em zero, o outro cara poderá fazer uma espada.
fonte
mcs program.cs
irá compilá-lo,mono program
executá-lo, mas você precisará substituir osfoo.Dump();
s porSystem.Console.WriteLine(foo);
(ou adicionar um método de extensãopublic static void Dump(this string value) { System.Console.WriteLine(value); }
).mcs
gerado é<filename>.exe
, por exemplo,program.cs
se tornariaprogram.exe
. Então, o comando run seriamono program.exe
. (Eu não tinha acesso a mono no momento do meu comentário anterior.)FancyTechnoAlgorithm
Um algoritmo de techno chique para o programa de computador techno chique.
O homem das cavernas continua a perder a batalha. Homem das cavernas com raiva. Então o homem das cavernas vai para a escola de informática aprender a criar algoritmo.
Programa Python 2. Para correr:
python fancytechnoalgorithm.py
fonte
python StickSharpener.py
).O vigia
Ele observa os movimentos de seu oponente, sempre deixando que eles mostrem suas mãos antes que ele ataque. Ele está particularmente preparado para aqueles que negligenciam trabalhar em direção a uma espada.
Nome do arquivo:
watcher.py
Para correr:
python watcher.py
Basilisco
Procura destruir aqueles que olham para ele com muita atenção. Consistentemente vence o Observador, mas provavelmente se sairá pior no geral.
Nome do arquivo:
basilisk.py
Para correr:
python basilisk.py
Nash
Procura tornar irrelevantes as escolhas de seu oponente, escolhendo cada jogada com uma probabilidade que explique seus riscos e recompensas
Este não é exatamente o equilíbrio de Nash (meu gerador de estratégia tem alguma instabilidade), mas está próximo.
Por uma questão de curiosidade, aqui estão as estimativas de qual a probabilidade desse bot vencer em cada estado do jogo:
Nome do arquivo:
nash.py
Para correr:
python nash.py
Finta, simulação, fingimento, falsa ação
Abre com um ataque rápido, para testar as defesas de seu oponente.
Nome do arquivo:
feint.py
Para correr:
python feint.py
LatePokeBot
Irmão mais novo de PokeBot. Nunca mostra fraqueza, mas tenta lutar como seu irmão mais velho.
Nome do arquivo:
latepokebot.py
Para correr:
python latepokebot.py
fonte
:
no Basilisk; Eu consertei isso para vocêPokeBot
Escrito em Ruby.
Corra com
ruby pokebot.rb
.Este bot não é muito inteligente; faz sobre o que o homem das cavernas médio faria sozinho de qualquer maneira.
fonte
PatientWolf v2.0
Afia se estiver sem brilho, cutuca se o inimigo tiver uma espada no próximo turno ou se o inimigo estiver sem brilho, bloqueia o contrário.
Correr com
EDIT: obrigado a @sylwester por apontar um erro
fonte
PatientWolf.pl SB,SP
faz umaP
vez que pensa que tem uma vara afiada.perl patientwolf.pl "SB,SP"
. Você deveria fazermy($me,$him) = split/,/ $ARGV[0];
eif( @ARGV ) {print "S";exit}
.Homem das cavernas binário
Afiar, Facada, Repetir
Baseado na idéia de que o bloqueio é para mariquinhas, esse homem das cavernas alterna entre as duas opções restantes.
Ajuntar com
javac BinaryCaveman.java
Correr com
java BinaryCaveman
Edição: aventuras em matrizes de seqüência de caracteres ..... args.length () lança um erro. args.length sempre retorna 1. args [0] .length () retorna os comprimentos da primeira string na matriz.
EDIT 2: Atualizado graças à ajuda da Maçaneta da porta, Brilliand e Sylwester. Obrigado rapazes.
fonte
P
ouS
faz o oposto. E se ainda não há história, ele finge que a história seriaP,
(o que o leva a fazerS
primeiro).args[0].length()
, nãoargs.length
.CavekidBlocks
Um garoto da caverna chorando e assustado pode parecer uma presa fácil. Não deixe o rosto bonito dele te enganar, porque ele sabe como bloquear.
Correr com
python3 cavekidblocks.py
ChargerMan
Este homem das cavernas é muito conservador. Tentará carregar sua arma e só ataca quando necessário.
Correr com
python3 chargerman.py
Malandro
Malandro não sabe lutar, então ele tenta confundir outro homem das cavernas.
Correr com
python3 trickster.py
Infelizmente, após a confirmação acc74 , Malandro não funciona como planejado mais.
fonte
Hodor
Hodor não é muito agressivo. Ele gosta de ficar em seu escudo, a menos que haja uma boa oportunidade para atacar.
compile com:
javac Hodor.java
e execute com:java Hodor
código:
Editar: atualização secundária do código
fonte
SB,BB
. Quando outros homens das cavernas se comportam mal no primeiro turno, Hodor também se comporta.Sylwester especulativo - Perl5
Sylwester especulativo quer eliminar os caçadores de espadas, observando os padrões e cutucando quando há uma chance de o oponente afiar e afiar quando o mais provável é que o oponente bloqueie. No entanto, ele não fará isso se houver uma chance de ter adivinhado que ele próprio se aguçará na próxima jogada e somos ainda mais cautelosos quando decidimos aguçar.
Quando o oponente é franco, ele tenta ser agressivo, mas acaba economizando para uma espada quando isso parecer infrutífero.
Para rodar no linux, adicione isso no playerlist.txt:
Fibonacci fácil - esquema R6RS
Além do primeiro movimento, o Facile Fibonacci bloqueia quando o turn é um número de Fibonacci (a partir de 0) e preenche o resto com
PPSS..
alterações quando passa 8 para uma sequência interminável dePSS
vitórias com uma espada.Para executar, instale o ikarus
apt-get install ikarus
e adicione-o no playerlist.txt:Estudioso Sylwester - Perl5
Sylwester estudioso usa a mesma tática que Sylwester especulativo, mas ele também analisa os jogos anteriores para determinar onde ele pode ter feito uma escolha errada.
Para rodar no linux, adicione-o ao playerlist.txt
Estudioso editar
Não consigo reproduzir os problemas que você teve por
$0
não ser o caminho completo para o script perl quando ele é executado com perl. Também retirei suas alterações e não vejo alterações no CavemanDuels src. É o mesmo que corri mais de 20 vezes sem o problema que está relatando. Estou começando a temer que você tenha originado o script como um script bash, em vez de executá-lo enquanto executável ou como um argumento para perl. Preciso de mais informações para realmente ter certeza. Como teste, fiz isso e você pode fazer o mesmo para ver se obtém o mesmo resultado:fonte
$0
ébash
quando chamado a partir de uma linha de comando do bash (que é feita pelo controlador). Você poderia apenas codificarplayers/StudiousSylwester/foo.txt
, no entanto.ikarus
e adicionei meus pensamentos$0
para o Studious.Ferreiro
Precisa de vara afiada. Se tiver uma vara afiada, cutucar. Eu não sinto dor.
Salvar como
swordsmith.f90
e compilar comgfortran -o swordsmith swordsmith.f90
, executar como faria com qualquer executável normal:./swordsmith
.fonte
Paciente
Este bot está escrito em R, use
Rscript PatientBlacksmith.R
para acioná-lo.Mede a nitidez do manche do oponente: bloqueia quando afiado, leva tempo para afiar de outra forma. Quando a nitidez própria atingir 5, cutuque até a nitidez desaparecer.
fonte
Regras da prisão, Haskell
As mulheres das cavernas acham que o homem das cavernas e outros homens das cavernas deveriam conversar, compartilhar o pau. Mas, ei, se precisar lutar, lute contra as regras da prisão. Encontre chefe e ataque.
Vice-líder Alpha Caveman agora; aquele que homem das cavernas deve lutar. Outros homens das cavernas lutam mais tarde. Se meu homem das cavernas perder, não se preocupe; ele também peludo de qualquer maneira.
Escrito em Haskell (vá para a programação funcional!), Salve como prisãorules.hs e compile com:
E execute como:
fonte
Eu o chamo de JavaMan
nota: eu não pretendo jogar código de golfe .. mas se você é um jogador de golfe e os espaços / linhas extras fazem seus olhos sangrarem .. fique à vontade para alterá-lo
fonte
Pensamentos Profundos, C
Código do homem das cavernas. Homem das cavernas pensar. Homem das cavernas.
Eu faço testes. Mais pensamentos melhores.
fonte
Nigel
Nigel é um velho homem das cavernas, defensivo e paciente, que prefere ser tático a dar o máximo de si no ataque.
É um script PHP, ligue com
php nigel.php
fonte
Aichmophobic - Lua
Ele ocasionalmente cutucará você, mas apenas até que o pau fique muito afiado. Quando isso acontece, ele entra em pânico e se enrola na posição fetal.
Execute-o com:
lua aichmophobic.lua
fonte
Bob Caves
Bob Caves é um dos caras mais inteligentes de sua caverna. Ele aprendeu a contar com uma mão (a outra está ocupada segurando o graveto). Ele sabia das Olimpíadas da Idade da Pedra e queria participar.
Sua principal estratégia é bloquear e afiar o bastão até que ele tenha um bom bastão de sharpy ou o outro homem das cavernas também. Nesse caso, Bob Caves tenta cutucá-lo!
Compilar
javac BobCaves.java
e executar comjava BobCaves
Edit: Bob agora conta quando há algum bloco! (graças a Mikey Mouse ). Além disso, ele afiará o graveto quando o outro graveto do homem das cavernas estiver embotado.
Editar 2: método de contagem aprimorado (obrigado novamente a Mikey).
Edit 3: Tornando Bob um pouco mais agressivo.
fonte
Gruntt
Gruntt está na defensiva. Gruntt analisa outros movimentos dos homens das cavernas para saber como cutucá-los. Então ele os cutuca bem nos olhos. Gruntt não é um bom homem das cavernas.
Compilar
javac Gruntt.java
e executar comjava Gruntt
fonte
ArrayOutOfBoundsException
no primeiro turno e, às vezes, gera várias ações em outros turnos.Isso é um passaro? É um avião? É RegExMan!
Ele tenta analisar suas sequências super-chatas com seu poder primordial especial RegEx!
Escrito em Python 2.7, execute com
python RegExMan.py [history]
fonte
Siciliano
Mas é tão simples! Tudo o que tenho a fazer é divino com o que sei de outro homem das cavernas: ele é o tipo de homem das cavernas que iria bloquear, afiar ou cutucar? Agora, um homem das cavernas esperto cutucava ou bloqueava, porque sabia que apenas um grande tolo se afiaria e se exporia ao ataque. Eu não sou um grande tolo, então claramente não posso aguçar. Mas outro homem das cavernas deve saber que eu não sou um grande tolo e teria contado com isso, para que eu claramente não possa cutucar ou bloquear!
Correr com:
Código:
fonte
bash-magnon
Bash-magnons foram robustos e poderosos. O corpo era geralmente pesado e sólido, com uma musculatura forte. A testa era razoavelmente reta, em vez de inclinada, como nos neandertais, e com apenas ligeiras sobrancelhas. O rosto era curto e largo. O queixo era proeminente. A capacidade cerebral era de cerca de 1.600 centímetros cúbicos (98 cu in), maior que a média dos humanos modernos. No entanto, pesquisas recentes sugerem que as dimensões físicas do chamado "Bash-Magnon" não são suficientemente diferentes dos humanos modernos para justificar uma designação separada.
Eu tenho um cérebro, me lembro.
Este é um auto executável
./bash-magnon.sh
fonte
PokeBackBot
Simplesmente adaptado do PokeBot:
Corra com
ruby pokebackbot.rb
.Isso usa a próxima estratégia mais simples e bloqueia "pacientemente" por uma rodada antes de atacar.
fonte
SPS
vencerá qualquer bot que comece com (o que parece razoável), mas até agora o PokeBot era o único.Mestre de espada
Escrito em Python 3.4 (funciona com Python 3.x)
Tenta obter uma espada o mais rápido possível, mas ataca se tiver uma chance de atingi-lo (nitidez> 0) e o inimigo também pode machucá-la (nitidez do inimigo> 0).
Bloqueia apenas se não tiver nitidez e o inimigo puder atacar.
Começar com:
(supondo que você o salve como
swordmaster.py
)Código rápido e feio:
(Defina
dg
paraTrue
ativar as mensagens de depuração)fonte
S
,P
,S
,P
...FoolMeOnce.py
Salve os movimentos de cada jogador no primeiro duelo e depois jogue com os mesmos movimentos. Se o algoritmo do inimigo não for aleatório, podemos prever o mesmo resultado e atacar apenas quando sabemos que venceremos.
Escrito em python 3, provavelmente você precisará usar python3 FoolMeOnce.py Na primeira rodada, não tenho certeza se obtemos uma string vazia ou apenas uma vírgula; portanto, podem ser necessários alguns ajustes.
fonte