Regras básicas (diferentes das minhas)
História
É o ano de 4579, os humanos agora têm 2 mãos com 1001 dedos cada. Pauzinhos tornou-se baseado em pontos. E @Dennis tem mais representantes que @Martin ... Os círculos vermelhos desenhados à mão agora estão com o voto negativo ... Jon Skeet atingiu 2 trilhões de repetições em todos os sites do SE ... Sim, assustador, eu sei
Chopsticks é um jogo de mãos que foi resolvido. Então, para contornar isso, eu o criei mutado. Aumentei a quantidade de dedos.
Regras do jogo
A maneira como isso é tocado
Todo mundo começa com 2 mãos. Cada mão tem 1001 dedos. Cada mão começa com 1 (um) dedo para cima em cada mão. Durante o seu turno, você pode "acertar" a mão de outros jogadores. Para acertar, escolha 1 de suas mãos para acertar e 1 de suas mãos para acertar. A mão que foi atingida agora tem a quantidade de dedos que eram deles no início E a quantidade de dedos que você tinha na mão com a qual bateu.
EX
P1: 1,1
P2: 1,1
. P1[0]
hits P2[1]
. Agora os dedos estão P1:1,1
P2:1,2
. Agora P2[1]
bate p1[0]
. Os dedos estão agora P1: 3,1
P2 1,2
.
Se uma mão chegar a 1001 dedos para cima ou mais, então ela estará estendida. O jogador que recebeu uma mão (por sua vez) pode "dividir". A divisão é quando você pega a mão que está dentro e reduz pela metade a quantidade de dedos (arredondados para cima) e dá esses dedos para a outra mão, devolvendo-a.
EX
P1: 1000,2
P2 7,7
. P2[0]
hits P1[0]
. A pontuação é P1: 0,2
P2 1,1
. P1[1]
divide por sua vez e a pontuação é P1: 1,1
e P2 7,7
.
O jogo termina quando um jogador tem as duas mãos estendidas. Os pontos são pontuados pela quantidade de dedos que o vencedor possui. Mais pontos = melhor. O perdedor não ganha pontos.
Existem outras regras que são usadas, mas estas são as usadas aqui.
Todo mundo joga todo mundo (round robin)
Fim de jogo
Totalize seus pontos em cada rodada que você ganhar. Em seguida, calcule a média de todos os pontos. Divida seu total pela média de pontos e obtenha sua pontuação final. A maioria dos pontos vence.
Regras reais
Por favor, não tente resolver o jogo. Na verdade, tenho que ser capaz de executá-lo: P
Verifique se o bot pode funcionar rápido. Com a duração das rodadas julgando, isso levará um tempo
Todas as bibliotecas necessárias no seu programa devem estar na biblioteca python padrão. Também liste os que você precisa importar. As importações serão apenas a importação básica (para matemática, eu faço import math
:)
As respostas devem funcionar no Python 3.x
Handler
Seu bot será seu próprio arquivo Python 3 com uma play
função.
play
serão passadas duas listas de dois números cada. Este número indica quantos dedos há em cada mão. A primeira lista é sua própria mão.
Se você escolher bater na mão do outro jogador, retorne uma lista de dois bits. O primeiro bit é o índice da mão que você está usando para acertar ( 0
pela primeira, 1
pela última), e o segundo bit é o índice da mão que você está acertando no oponente.
Se você optar por dividir, retorne qualquer outro valor verdadeiro.
Tada!
O controlador pode ser encontrado aqui . Salve cada bot em seu próprio arquivo e liste o nome do arquivo de cada bot (sem .py
) em botnames
.
Nota final:
Você e o outro bot revezam-se primeiro. Se o jogo não terminar em 100.000 (cem mil) rodadas, o jogo será encerrado e nenhum bot vence.
O controlador não está protegido contra movimentos que levam uma eternidade, mas a sobrecarga desnecessária será fortemente desaprovada.
My handler is very simple, your bot must do it's logic then adjust the the finger scores as needed, remember!
Então, nós somos os únicos a fazer os cálculos para o KoTH?