Los resultados finales están aquí!
Introducción
En 2042, el mundo se ha sobrepoblado. La globalización, el hacinamiento, los nuevos estilos de vida y la falta global de higiene han provocado la propagación de una nueva pandemia. Durante esos tiempos difíciles, los líderes estatales tienen que manejar la situación. No puede dejar que su población sea diezmada, pero tal vez podría beneficiarse dejando morir a sus vecinos ...
Glosario
Saludable : personas no infectadas
Infectadas : personas que pueden morir a causa de la pandemia
Muertos : recuento corporal, sin efecto particular (solo puntuación)
Tasa de infección : número de sanos que se infectarán cada turno
Tasa de contagio : porcentaje de infectados que se convertirá en sano en infectado cada turno
Tasa de letalidad : porcentaje de infectados que morirán cada turno
Tasa de migración : porcentaje de sanos e infectados que emigrarán / emigrarán cada turno
Local: Afecta solo a su estado
Global : Afecta a todos los estados
Principio
Cada uno de los jugadores administrará una ciudad, comenzando con 100 personas . Desafortunadamente, entre ellos hay uno infectado .
El juego está basado en turnos. Un turno consta de siete fases , la última es interactiva (solicitando un comando a los bots). El orden de los jugadores se aleatoriza cada turno. La siguiente fase comienza cuando la fase anterior ha sido ejecutada por cada ciudad (Turno 1: Jugador 1, Jugador 2, Jugador 3 ...; Turno 2: Jugador 3, Jugador 2, Jugador 1 ...):
1. Mutation - AUTOMATED
2. Reproduction - AUTOMATED
3. Migration - AUTOMATED
4. Infection - AUTOMATED
5. Contagion - AUTOMATED
6. Extinction - AUTOMATED
7. Players Turn - INTERACTIVE
El controlador le proporciona entrada a través de argumentos de comando, y su programa tiene que salir a través de stdout.
Sintaxis
Entrada
Cada vez que se llama a su programa, recibirá argumentos en este formato:
Round;YourPlayerId;PlayerId_Healthy_Infected_Dead_InfectionRate_ContagionRate_LethalityRate_MigrationRate;PlayerId_Healthy_Infected_Dead_InfectionRate_ContagionRate_LethalityRate_MigrationRate;...
Las rondas están indexadas en 1.
Entrada de ejemplo
6;2;1_106_23_9_2_4_13_5;0_20_53_62_16_20_35_5;2_20_53_62_16_20_35_5
Aquí, ves que es la sexta ronda y eres el jugador 2. Tienes 20 saludables, 53 infectados, 62 muertos, una tasa de infección del 16%, una tasa de contagio del 20%, una tasa de letalidad del 35% y una tasa de migración del 5%.
Salida
Debe generar tres caracteres (sin espacio, sin separador), cada uno de los cuales corresponde a una acción que tomará en este turno. El orden de los personajes determina el orden de las acciones. Puede generar las mismas acciones varias veces.
N
: No N ada
M
: Investigación M icrobiology [Efectos: Reducir locales tasa de infección en un 4%]
E
: Investigación E pidemiology [Efectos: Reducir local de contagio Tasa de un 8%]
I
: Investigación I mmunology [Efectos: Reducir local de letalidad Tasa de un 4%]
V
: Investigación V accination [Efectos: reducir local de la tasa de infección por uno, reducir local de contagio Rate en un 4%, reducir el local de letalidad Rate por 2%]
C
: Dar C ure [Efectos: Convertir 10 local de Infected a Healthy ]
Q
: Q uarantine [Efectos: Eliminar 30 Infectados locales ]
O
: Bordes O Pen [Efectos: Aumentar la tasa de migración local en un 10%]
B
: Cerrar órdenes B [Efectos: Disminuir la tasa de migración local en un 10%]
T
: Error de Bio T [Efectos: Convertir 4 global saludable a infectado ]
W
: W eaponización [Efectos: aumentar la tasa de infección global en 1, aumentar la tasa de letalidad global en un 2%]
D
: D isseminación [Efectos: aumentar la tasa de infección globalen 1, aumentar la tasa de contagio global en un 2%]
P
: acificación P [Efectos: Disminuir la tasa de infección global en 1, disminuir la tasa de contagio global en un 1%, disminuir la tasa de letalidad global en un 1%]
Como se Juega
Todas las fases
Comando no válido = Nada
Porcentaje se suman como enteros, es decir, 10% - 4% = 6%. Cuando los porcentajes se aplican en una fórmula, el resultado se anula.
Fase 1: mutación
La pandemia se está volviendo más potente. Cada turno, gana aleatoriamente uno de estos atributos (esta mutación afecta a todos los jugadores a la vez):
- Aumentar la tasa de infección global en 2
- Aumentar la tasa de contagio global en un 5%
- Aumentar la tasa de letalidad global en un 5%
Fase 2: reproducción
Cada cinco rondas (ronda 5, 10, 15 ...), nacerán nuevos ciudadanos. Cada par de Healthy hará un Healthy (23 Healthy generarán 11 nuevos Healthy ). Cada par de infectados hará uno infectado .
Fase 3: Migración
Cada turno, un porcentaje de Saludables e Infectados abandonará los estados, dependiendo de su Tasa de migración (10 Saludables dejarán un estado con 100 Tasa de migración saludable y 10% ). Luego, los migrantes se distribuirán entre todos los estados, una vez más, dependiendo de la tasa de migración . (Las tasas de cada estado se ponderan y los migrantes se distribuyen en consecuencia).
Fase 4: infección
Los sanos de cada estado se convierten en infectados , según la tasa de infección .
Fase 5: Contagio
Los sanos de cada estado se convierten en infectados , de acuerdo con la tasa de contagio . El número se calcula multiplicando el infectado por la tasa de contagio .
Fase 6: Extinción
Los infectados se convierten en muertos , según la tasa de letalidad . El número se calcula multiplicando el infectado por la tasa de letalidad .
Fase 7: Turnos de jugadores
Cada jugador recibe entrada y debe emitir tres acciones, que se ejecutan en el orden en que se emiten.
Reglas
- Los bots no deben escribirse para vencer o admitir otros bots específicos.
- Se permite escribir en archivos. Escribe a "yoursubmissionname.txt", la carpeta se vaciará antes de que comience el juego. Otros recursos externos están prohibidos.
- Su envío tiene un segundo para responder (por ciudad).
- Proporcione comandos para compilar y ejecutar sus envíos.
Victorioso
El ganador es el que tiene más salud después de 50 rondas. Si un jugador es el último vivo (más de 0 sano o infectado ) el juego se detiene y gana. Si varios jugadores tienen la misma cantidad de Saludable , el que tenga más Infectados ganará, luego el que tenga menos Muertos .
Controlador
Puedes encontrar el controlador en GitHub . También contiene tres samplebots, escritos en Java.
Para que se ejecute, consulte el proyecto y ábralo en su Java IDE. El punto de entrada en el main
método de la clase Game
. Se requiere Java 8.
Para agregar bots, primero necesita la versión compilada para Java (archivos .class) o las fuentes para los idiomas interpretados. Colóquelos en la carpeta raíz del proyecto. Luego, cree una nueva clase Java en el players
paquete (puede tomar un ejemplo en los bots ya existentes). Esta clase debe implementarse Player
para anular el método String getCmd()
. La cadena devuelta es el comando de shell para ejecutar sus bots. Por ejemplo, puede hacer una obra bot rubí con este comando: return "C:\Ruby\bin\ruby.exe MyBot.rb";
. Finalmente, agregue el bot en la players
matriz en la parte superior de la Game
clase.
Resultados Finales (2016-03-04 08:22 GMT)
Global (100 reputación):
Resultados de 100 juegos: http://pasted.co/942200ff
1. EvilBot (24, 249, 436)
2. Triage (23, 538, 486)
3. WICKED (23, 537, 489)
4. Israel (23, 40, 240)
5. InfectedTown (22, 736, 482)
6. ZombieState (22, 229, 369)
7. Mooch (22, 87, 206)
8. InfectedHaven (21, 723, 483)
9. Crossroads (16, 9, 136)
10. TheKeeper (3, 4, 138)
11. Terrorist (0, 595, 496)
12. InfectionBot (0, 511, 430)
13. FamilyValues (0, 6, 291)
14. UndecidedBot (0, 0, 20)
15. XenoBot (0, 0, 26)
16. Researcher (0, 0, 33)
17. Strategist (0, 0, 42)
18. TheCure (0, 0, 55)
19. Socialist (0, 0, 67)
20. TrumpBot (0, 0, 77)
21. CullBot (0, 0, 81)
22. BackStabber (0, 0, 87)
23. BlunderBot (0, 0, 104)
24. RemoveInfected (0, 0, 111)
25. PFC (0, 0, 117)
26. BioterroristBot (0, 0, 118)
27. PassiveBot (0, 0, 118)
28. Smaug (0, 0, 118)
29. WeaponOfMassDissemination (0, 0, 119)
30. AllOrNothing (0, 0, 121)
31. Obamacare (0, 0, 122)
32. DisseminationBot (0, 0, 123)
33. CureThenQuarantine (0, 0, 125)
34. Madagascar (0, 0, 129)
35. OpenAndClose (0, 0, 129)
36. ThePacifist (0, 0, 130)
37. MedicBot (0, 0, 131)
38. Medic (0, 0, 133)
39. Salt (0, 0, 134)
40. Piecemeal (0, 0, 136)
41. Graymalkin (0, 0, 137)
42. PureBot (0, 0, 140)
43. MadScienceBot (0, 0, 144)
44. BipolarBot (0, 0, 149)
45. RedCross (0, 0, 151)
Doomsday-less (200 reputación):
Resultados de 100 juegos: http://pasted.co/220b575b
1. FamilyValues (5708, 14, 2)
2. BlunderBot (5614, 12, 3)
3. Graymalkin (5597, 17, 4)
4. PureBot (5550, 12, 5)
5. Crossroads (5543, 11, 4)
6. Salt (5488, 24, 7)
7. CureThenQuarantine (5453, 13, 7)
8. Piecemeal (5358, 121, 23)
9. TrumpBot (5355, 12, 5)
10. CullBot (5288, 12, 9)
11. AllOrNothing (5284, 13, 10)
12. Madagascar (5060, 180, 35)
13. TheKeeper (4934, 165, 44)
14. WICKED (4714, 25, 5)
15. Strategist (2266, 25, 5)
16. BackStabber (2180, 1327, 596)
17. RemoveInfected (2021, 33, 27)
18. OpenAndClose (1945, 667, 394)
19. Triage (1773, 401, 80)
20. TheCure (1465, 46, 26)
21. Obamacare (1263, 525, 247)
22. Mooch (1103, 546, 269)
23. Israel (1102, 580, 292)
24. RedCross (1086, 1700, 727)
25. ThePacifist (1069, 636, 580)
26. Researcher (1035, 113, 37)
27. UndecidedBot (825, 219, 93)
28. PassiveBot (510, 990, 567)
29. MedicBot (411, 1474, 667)
30. Medic (392, 1690, 619)
31. Socialist (139, 63, 90)
32. XenoBot (0, 82, 170)
Gracias a todos por su participación. Espero que lo hayas pasado tan bien diseñando y codificando tus bots como lo hice yo con el juego.