Distanciamento para 4 homens
Descrição
Você de alguma forma se viu em um impasse de quatro vias. Uma arma carregada repousa em suas mãos e algumas granadas estão presas no seu cinto.
O objetivo é ter mais saúde ao final de um impasse. Um impasse termina quando no máximo uma pessoa tem uma quantidade positiva de saúde.
Cada jogador tem vida 5
e morre quando a saúde cai para / abaixo 0
. O turno em que um jogador morre é o último turno em que um jogador pode sofrer dano.
Se houver um jogador ao vivo no final de um impasse, esse jogador vence. Caso contrário, o jogador com menos pontos de vida negativos ganha.
Ações
Atirar : Atire em alguém.
2
dano se atirar em um inimigo vivo0
dano se atirar em um inimigo mortohealth_at_start_of_turn+2
danos se atirar em si mesmo. (Observe que isso deixará você com mais-2
saúde.)- Se um inimigo atirar em você no mesmo turno em que você se atirar, você terminará o impasse com -4 de vida (você ainda recebe dano de outros jogadores no turno em que se mata).
- Sua ação no turno seguinte será ignorada (e presumida
Nothing
).
Esquivar : Tente desviar do tiro de um único oponente.
Prepare : Solte sua granada e prepare-se para jogá-la.
- Você só tem três turnos para jogá-lo antes de ser explodido (
6
dano a si mesmo,3
dano a todos os inimigos vivos) - Morrer com uma granada não jogada é equivalente a não jogar a granada por três turnos.
- Você só tem três turnos para jogá-lo antes de ser explodido (
Jogue : jogue a granada em direção a alguém e torça pelo melhor.
- O alvo recebe
8
dano se estiver vivo - Todos os outros (inclusive você) recebem
3
dano se estiverem vivos
- O alvo recebe
Nada : fique parado por um turno e observe todos morrerem.
Entrada
Seu programa receberá as seguintes informações:
- A saúde de cada jogador
Uma lista de ações realizadas por esse jogador desde o início do confronto Abaixo está o formato das informações passadas por jogador:
[Health],[Action 1],[Action 2],[Action 3],...
As ações serão dadas no formato especificado na seção Saída .
Você receberá 4 dessas strings, separadas por um espaço, e transmitidas como um único argumento. A ordem dessas seqüências de caracteres é:
[Player Info] [Opponent 1 Info] [Opponent 2 Info] [Opponent 3 Info]
As cadeias são passadas como o segundo argumento. O primeiro argumento contém um número inteiro que identifica exclusivamente o impasse que está sendo promulgado. É garantido que os impasses entre o mesmo conjunto de jogadores não sejam simultâneos. No entanto, vários impasses serão ocorrer ao mesmo tempo.
Por exemplo:
$./Player.bash 5 "3,S2,N 5,P,N 3,S0,N -2,S3,N"
Atualmente, o jogador e o segundo oponente têm 3 pontos de vida, o primeiro adversário tem 5 pontos de vida e o terceiro oponente tem -2 pontos de vida e está morto.
No primeiro turno:
- Jogador 1 atirou no inimigo 2
- Inimigo 1 preparou uma granada
- Inimigo 2 atirador
- O inimigo 3 atirou em si mesmo
No segundo turno:
- Todos os jogadores não fizeram nada. (O jogador e o inimigo 2 não podem fazer nada desde que atiraram no turno anterior. O inimigo 3 está morto: ele fará
Nothing
o resto do impasse.)
O segundo argumento no início de um impasse é: 5 5 5 5
.
Resultado
Um comando deve ser emitido no formato listado abaixo. Uma saída inválida é interpretada como 'Nothing'. Um comando que requer um alvo deve ser seguido por um número inteiro ( 0-3
, 0
representando o jogador e 1-3
representando os inimigos 1-3).
S[target]
: Dispara no alvo.D[target]
: Tenta se esquivar [alvo].P
: Prepare uma granada.T[target]
: Jogue a granada em [alvo].N
: Fazer nada.
Um comando que precisa de um alvo, mas é alimentado com um alvo que não está entre 0
e que 3
não é alimentado inteiramente com um alvo será assumido como alvo0
(o jogador).
Pontuação
No final de cada impasse, os jogadores recebem uma pontuação calculada pela seguinte fórmula:
35 + health at end of standoff
No caso em que um jogador termina um impasse com a saúde negativa, eles vão receber uma pontuação abaixo de 35 . Os seguintes pontos também são recompensados como um bônus:
- Mais saúde: +4 pontos
- Segundo maior número de pontos de vida: +2 pontos
- Terceiro maior número de pontos de vida: +1 ponto.
Em caso de empate, o bônus mais baixo é concedido (se duas pessoas empatarem com mais pontos de vida, ambos receberão +2; se houver 3 pessoas com mais pontos de vida, +1 e se todos terminarem igualmente, +0).
A pontuação final é determinada calculando a média de todas as pontuações individuais.
Regras / Detalhes
- A ordem dos eventos dentro de um turno é a seguinte:
- Todos os jogadores fazem suas ações.
- Jogadores com 0 ou menos pontos de vida morrem.
- Granadas não lançadas que precisam explodir, explodirão (jogadores que acabaram de morrer ainda estão feridos, pois ainda é a vez em que eles morreram).
- Nenhuma colaboração entre entradas.
- Três * standoffs ocorrerão entre cada conjunto de 4 jogadores. (A ordem dos jogadores pode variar a cada impasse).
- As entradas que consumirem quantidades excessivas de memória do espaço em disco serão desqualificadas.
- Ler ou modificar arquivos que não sejam da sua entrada desqualificará a sua entrada.
- Um caminhão, dirigido por um bêbado, atropelará todos os jogadores vivos após o
50th
turno, se o impasse ainda não tiver terminado no final do50th
turno.- Este caminhão causa 20 de dano a todos os jogadores ao vivo.
- Os impasses ocorrem rapidamente. Os programas são cortados após 1 segundo.
- Seu programa será chamado a cada turno, mesmo depois que você morrer.
- Você pode ler ou gravar arquivos apenas em seu diretório (se sua entrada for JohnDoe, você poderá salvar arquivos no diretório players / JohnDoe /); no entanto, esse NÃO será o diretório atual enquanto o script estiver em execução.
- Os impasses ocorrerão em uma máquina executando o Arch Linux (versão 2014.08.01).
O controlador está disponível no GitHub .
Inclua o seguinte em sua postagem:
- Um nome para o seu bot
- Um comando shell para executar a entrada bot (ex.
java Doe.java
) Será passado pela linha de comando como um único argumento (java Doe.java 5 "-2,S0 -2,S1 -2,S2 5,N"
) - Código do seu bot
- Como o bot deve ser compilado (se aplicável)
- Idioma (e versão, se aplicável, especialmente para python)
* O controlador está demorando muito para seis.
Placar
Observer 43.280570409982
MuhammadAli 43.134861217214
Osama 43.031983702572
LateBoomer 42.560275019099
SimpleShooter 42.412885154062
LessSimpleShooter 42.3772
Neo 42.3738
Scared 42.3678
Richochet 42.3263
Equivocator 42.2833
TwentyFourthsAndAHalfCentury 42.2640
Darwin 42.1584
HanSolo 42.1025
Coward 42.0458
ManipulativeBastard 41.8948
Sadist 41.7232
Aggressor 41.7058
CourageTheDog 41.5629
Grenadier 40.9889
Bomberman 40.8840
Spock 40.8713
Sniper 40.6346
DONTNUKEMEBRO 39.8151
PriorityTargets 39.6126
Hippolyta 39.2480
EmoCowboy 39.2069
Zaenille 39.1971
AntiGrenadier 39.1919
PoliticallyCorrectGunman 39.1689
InputAnalyzer 39.1517
Rule0Bot 39.1000
BiasedOne 39.0664
Pacifist 39.0481
StraightShooter 39.0292
Ninja 38.7801
MAD 38.2543
Monkey 37.7089
Label1Goto1 36.2131
Generated: 2014/08/22 03:56:13.470264860 UTC
Logs: no GitHub