Separación de 4 hombres
Descripción
De alguna manera te has encontrado en un enfrentamiento de cuatro vías. Un arma cargada descansa en tus manos, y algunas granadas están enganchadas en tu cinturón.
El objetivo es tener la mayor salud al final de un enfrentamiento. Un enfrentamiento termina cuando, como máximo, una persona tiene una cantidad positiva de salud.
Cada jugador tiene 5
salud y muere cuando su salud cae a / debajo 0
. El turno que muere un jugador es el último turno en el que ese jugador puede recibir daño.
Si hay un jugador en vivo al final de un enfrentamiento, ese jugador gana. De lo contrario, el jugador con la salud menos negativa gana.
Comportamiento
Dispara : dispara a alguien.
2
daño si disparas a un enemigo vivo0
daño si dispara a un enemigo muertohealth_at_start_of_turn+2
daño si te disparas a ti mismo. (Tenga en cuenta que esto lo dejará con MÁS-2
salud).- Si un enemigo te dispara en el mismo turno en el que te disparas a ti mismo, terminarás el enfrentamiento con -4 puntos de vida (igual recibirás daño de otros jugadores el turno en que te mates).
- Su acción el siguiente turno será ignorada (y se supondrá que es
Nothing
).
Esquiva : intenta esquivar el tiro de un solo oponente.
Prepárese : desenganche su granada y prepárese para lanzarla.
- Solo tienes tres turnos para lanzarlo, antes de explotar (
6
daño a ti mismo,3
daño a todos los enemigos vivos) - Morir con una granada no lanzada es equivalente a no arrojar la granada durante tres turnos.
- Solo tienes tres turnos para lanzarlo, antes de explotar (
Lanzar : Lanza la granada hacia alguien y espera lo mejor.
- El objetivo recibe
8
daño si está vivo - Todos los demás (incluido usted) reciben
3
daño si están vivos
- El objetivo recibe
Nada : quédese de brazos cruzados y mire a todos morir.
Entrada
Su programa recibirá la siguiente información:
- La salud de cada jugador.
Una lista de las acciones tomadas por ese jugador desde el inicio del enfrentamiento A continuación se muestra el formato de la información que se pasa por jugador:
[Health],[Action 1],[Action 2],[Action 3],...
Las acciones se darán en el formato especificado en la sección Salida .
Recibirá 4 cadenas de este tipo, separadas por un espacio, y pasadas como un solo argumento. El orden de estas cadenas es:
[Player Info] [Opponent 1 Info] [Opponent 2 Info] [Opponent 3 Info]
Las cadenas se pasan como el segundo argumento. El primer argumento contiene un número entero que identifica de forma exclusiva el enfrentamiento que se está promulgando. Se garantiza que los enfrentamientos entre el mismo conjunto de jugadores no serán simultáneos. Sin embargo, se producirán múltiples enfrentamientos al mismo tiempo.
Por ejemplo:
$./Player.bash 5 "3,S2,N 5,P,N 3,S0,N -2,S3,N"
Actualmente, el jugador y el segundo oponente tienen 3 puntos de vida, el primer oponente tiene 5 puntos de vida y el tercer oponente tiene -2 puntos de vida y está muerto.
En el primer turno:
- El jugador 1 disparó al enemigo 2
- El enemigo 1 preparó una granada
- Enemigo 2 jugador de tiro
- El enemigo 3 se disparó
En el segundo turno:
- Todos los jugadores no hicieron nada. (El jugador y el enemigo 2 no pueden hacer nada ya que dispararon en el turno anterior. El enemigo 3 está muerto: lo hará
Nothing
por el resto del enfrentamiento).
El segundo argumento en el inicio de un enfrentamiento es: 5 5 5 5
.
Salida
Se debe emitir un comando en el siguiente formato. Una salida no válida se interpreta como 'Nada'. Un comando que requiere un objetivo debe ser seguido por un número entero ( 0-3
, con 0
lo que representa el jugador, y 1-3
que representa enemigos 1-3).
S[target]
: Dispara [objetivo].D[target]
: Intenta esquivar [objetivo].P
: Prepara una granada.T[target]
: Lanza la granada a [objetivo].N
: Hacer nada.
Un comando que necesita un objetivo, pero se alimenta un objetivo no entre 0
y 3
o no alimenta un objetivo totalmente será asumido a objetivo 0
(el jugador).
Puntuación
Al final de cada enfrentamiento, los jugadores reciben una puntuación calculada por la siguiente fórmula:
35 + health at end of standoff
En el caso de que un jugador pone fin a un enfrentamiento con la salud negativos, que se recibirá una puntuación por debajo de 35 . Los siguientes puntos también son recompensados como un bono:
- Mayor salud: +4 puntos
- Segundo más saludable: +2 puntos
- Tercero más salud: +1 punto.
En caso de empate, se otorga la bonificación más baja (si dos personas empatan con la mayor cantidad de salud, a ambas se les otorga +2; si hay 3 personas con la mayor cantidad de salud, +1, y si todos terminan igual, +0).
El puntaje final se determina calculando la media de todos los puntajes individuales.
Reglas / Detalles
- El orden de los eventos dentro de un turno es el siguiente:
- Todos los jugadores hacen sus acciones.
- Los jugadores que tienen 0 o menos de vida mueren.
- Las granadas no lanzadas que necesitan explotar explotarán (los jugadores que acaban de morir siguen heridos, ya que este es el turno en que murieron).
- No hay colaboración entre las entradas.
- Se producirán tres * enfrentamientos entre cada conjunto de 4 jugadores. (El orden de los jugadores puede variar con cada enfrentamiento).
- Las entradas que consuman cantidades excesivas de memoria de espacio en disco serán descalificadas.
- Leer o modificar archivos que no sean los de su entrada descalificará su entrada.
- Un camión, conducido por un borracho, atropellará a todos los jugadores vivos después del
50th
turno, si el enfrentamiento aún no ha terminado al final del50th
turno.- Este camión causa 20 daños a todos los jugadores vivos.
- Los enfrentamientos suceden rápidamente. Los programas se cortan después de 1 segundo.
- Su programa se llamará cada turno, incluso después de que haya muerto.
- Puede leer o escribir archivos en su directorio solamente (si su entrada se llama JohnDoe, puede guardar archivos en el directorio players / JohnDoe /); sin embargo, este NO será el directorio actual mientras se ejecuta su secuencia de comandos.
- Los enfrentamientos tendrán lugar en una máquina que ejecute Arch Linux (Versión 2014.08.01).
El controlador está disponible en GitHub .
Incluya lo siguiente en su publicación:
- Un nombre para tu bot
- Un comando de shell para ejecutar el bot (ej.
java Doe.java
) La entrada se pasará a través de la línea de comando como un solo argumento (java Doe.java 5 "-2,S0 -2,S1 -2,S2 5,N"
) - Código de tu bot
- Cómo debe compilarse el bot (si corresponde)
- Idioma (y versión si corresponde, especialmente para python)
* El controlador tarda demasiado para seis.
Marcador
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
Registros: en GitHub