Las entradas ahora están cerradas. Las nuevas entradas o ediciones no se contarán en la ejecución final.
¡Únete al chat!
Desafío
Intenta llenar el lienzo con tanta pintura como sea posible. ¡Sin embargo, ten cuidado con otros robots que pueden pintar sobre tu arduo trabajo!
Nota: En esta descripción del desafío, pintar significa cambiar el color del cuadrado en la cuadrícula y sin pintar significa que el cuadrado en la cuadrícula tiene el color 0 y no se atribuye a ninguno de los bots.
Entrada
Su función tendrá cuatro argumentos: usted, la cuadrícula, la posición de todos los bots en la cuadrícula y la información del juego.
Yo mismo
Esta es una matriz de 1D que denota su color y posición de la parrilla: [id, xpos, ypos]
.
La esquina superior izquierda de la cuadrícula es la posición (0, 0)
. La posición (1,0)
está a la derecha de eso y la posición (0,1)
está debajo
Su identificación es un número entero que es sinónimo de su color (consulte a continuación para descubrir cómo su identificación afecta la forma en que pinta la cuadrícula). Su identificación es exclusiva de su bot.
Cuadrícula
Esta es una matriz 2D que contiene enteros que le indican de qué color es cada celda. Si el número de una celda de la cuadrícula es 0
, eso significa que la celda no está pintada. Si el número de celdas de la cuadrícula es un número entero x
, esto significa que la celda ha sido pintada por el bot con la ID x
.
Para obtener el color de la cuadrícula en la posición (x, y)
, utilizar la matriz de esta manera: grid[x][y]
.
Bots
Esta es una matriz que contiene información sobre la posición de los bots. Cada elemento de la matriz de bots es una matriz que describe cada bot y tiene el siguiente aspecto:, [id, xpos, ypos]
donde id
está la ID del bot, xpos
es la posición x del bot y ypos
es la posición y del bot.
Esta matriz incluye la posición y la identificación de tu propio bot. Los bots eliminados no se incluirán en esta matriz.
Información del juego
Este es un conjunto que contiene información sobre el juego actual y tiene el siguiente aspecto: [roundNum, maxRounds]
dónde roundNum
está el número de la ronda actual (1 indexado) y maxRounds
es el número de rondas en el juego actual.
Salida
El resultado debe ser una cadena devuelta por su función. Este es el comando de movimiento.
El comando de movimiento determina tu próximo movimiento. Los comandos disponibles son:
up
down
left
right
wait
Cada vez que te mueves, pintas el cuadrado al que te mueves. (Vea abajo para más información)
Donde wait
significa que no te mueves. (pero pintas el cuadrado en el que te quedas)
Si intentas moverte fuera de la cuadrícula, tu comando será ignorado y permanecerás en el mismo lugar.
Pintar la cuadrícula
Cada vez que te mueves a un cuadrado, lo pintas, pero hay reglas que determinan cuál será el color de ese cuadrado.
Si el cuadrado no está pintado (0), simplemente lo pinta del mismo color que su propia identificación. Sin embargo, si el cuadrado ha sido pintado previamente (distinto de cero), el color resultante del cuadrado se encontrará de acuerdo con el siguiente código JavaScript:
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
Esta fórmula está hecha para permitir que un bot se mueva sobre su propio color sin volver a pintarlo.
Eliminación
Si, después de la ronda 5, tiene uno o menos cuadrados pintados (el número de cuadrados en la cuadrícula que son del mismo color que usted), entonces será eliminado. Esto significa que ya no estarás en el juego y perderás automáticamente.
Reglas
- Su código debe ser una función del tipo
function(myself, grid, bots, gameInfo) {
// Code here
return move;
}
- La cuadrícula será un cuadrado de longitud lateral
- Para evitar que se dirijan a bots específicos, los ID de los bots serán aleatorios.
- Cuando dos bots ocupan el mismo espacio, el color de ese espacio se hará sin pintar.
- El movimiento es a su vez basado es decir, durante una ronda, todos los robots se suministran con idéntica
grid
,bots
ygameInfo
argumentos
- Puedes crear un máximo de tres bots
- Los bots pueden trabajar juntos pero no deben comunicarse entre sí y no conocerán las identificaciones de los demás. Las victorias se otorgarán individualmente en lugar de en equipo.
- No debe crear un bot que intencionalmente apunte a un solo bot pre-elegido. Sin embargo, puedes apuntar a las tácticas de una clase general de bots.
- Su bot puede almacenar datos en
window.localStorage
. Cada bot debe usar su propio objeto de datos. Si se descubre que un bot está leyendo los datos de otro bot (accidentalmente o a propósito), será descalificado hasta que se resuelva el problema. - Si su bot usa números aleatorios, use
Math.random()
Controlador
El controlador se puede encontrar aquí:
https://gist.github.com/beta-decay/10f026b15c3babd63c004db1f937eb14
O puede ejecutarlo aquí: https://beta-decay.github.io/art_attack
Nota: Le aconsejaría que realice cualquier prueba fuera de línea (descargue el controlador de la esencia) ya que la página web está sujeta a cambios en cualquier momento.
Cuando se hayan agregado todos los bots, ejecutaré los 10,000 juegos con el controlador simplificado sin interfaz gráfica. Puede ejecutarlo aquí: https://beta-decay.github.io/art_attack/fast
Victorioso
El jugador que ha llenado la mayor parte del lienzo gana el juego (un juego es de 2000 rondas). En caso de empate, todos los jugadores empatados ganan.
El jugador que gana más de 10,000 juegos gana el desafío.
Se estima que los 10,000 juegos se ejecutarán el próximo lunes (2018-08-27 a las 23:00 UTC + 1).
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
fórmula, ya sea que un bot tenga suerte o no, y pinte sobre grandes competidores (o se pinte). También tenga en cuenta los trolls / cazadores que pueden destruir por sí mismos un bot de su elección. De cualquier manera, se promediará en los 10000 juegos.
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
al inglés, por favor?