El código más corto para pasar todas las posibilidades gana
Se han hecho muchos juegos basados en la red que comienzan con una red de luces que están encendidas. Al presionar cualquiera de las luces, se activa y se encienden las cuatro luces adyacentes. Cuando se enciende una luz, se apaga o se enciende, dependiendo de si se encendió o apagó inicialmente. El objetivo es encender las luces en una secuencia que da como resultado que todas las luces se apaguen al final.
"X" representa las luces que están encendidas. "O" representa las luces que están apagadas. "P" representa ese cuadrado que se presiona.
XOO XOO XOX XOX XXX
XOX XOP -> XXO -> OPO -> XOX
OOX OOX POO XXO XOO
Intial Grid Press 1 Press 2 Press 3 Ending Grid
La entrada puede tomarse directamente de un archivo pasado como argumento o como entrada estándar. La primera línea de entrada contendrá x (1 <= x <= 20), el tamaño de la cuadrícula de luces, lo que significa x por x . La segunda línea contendrá y (0 <= y <= ( x * 3) 2 ), el número de luces inicialmente encendidas. Las siguientes líneas y contienen coordenadas de luces encendidas en la cuadrícula, en el formato de "columna de fila". Las luces que ya están encendidas (se han activado previamente) deben desactivarse nuevamente. La siguiente línea contendrá z , el número de luces presionadas. La z final las líneas contienen coordenadas de las luces presionadas, en el orden en que fueron presionadas, en el formato de "columna de fila".
Ninguna entrada será incorrecta. Todos los números estarán dentro de los límites dados de la cuadrícula.
La salida será la grilla final después de que se hayan activado todas las luces. Debería ser una cuadrícula n por n . Para cada área que tiene una luz encendida, se debe usar el carácter en mayúscula "X". Para cada área que tiene una luz apagada, se debe usar el carácter en mayúscula "O".
Las luces afectadas que están fuera de la red deben ignorarse. Alternar una luz en el borde de una cuadrícula solo debería afectar las luces que se encuentran en la propia cuadrícula.
Casos de prueba
Entrada
4
5
2 3
2 4
3 1
3 4
4 3
7
3 3
4 4
3 4
4 2
4 1
2 2
3 2
Salida
OXOO
XOXO
XOXO
OXOO
Entrada
1
3
1 1
1 1
1 1
2
1 1
1 1
Salida
X
fuente
exec
es una palabra clave, no una función integrada (en Python 2.x), por lo que no es necesario utilizar esos paréntesis adicionales.Ruby 1.9, 167 caracteres
Ediciones:
z[u]*=-1
lugar dez[u]=-z[u]
, quite la variable no utilizadafuente
Perl, 139 caracteres
Explicación:
fuente
APL (71)
fuente