Este desafío está inspirado en esta aplicación .
Esta es una versión mucho más fácil de este desafío . Este desafío es el código golf , mientras que el otro es el código más rápido .
Se le dará una cuadrícula de entrada cuadrada, de dimensiones 6 por 6 que se divide en 6 áreas, donde las celdas de cada área tienen un identificador único (usaré letras minúsculas de af en el texto aquí, pero puede elegir lo que quiera, por ejemplo, enteros 1-6 ).
La entrada puede verse así (formato de entrada opcional):
aabbbb
aabbbb
aaccbb
acccdb
ecccdb
eeefff
O, más fácil de visualizar:
Desafío:
Debe colocar 6 árboles en este parque, de acuerdo con las siguientes reglas:
- Habrá exactamente 1 árbol por columna y 1 árbol por fila
- Todas las áreas deben tener exactamente 1 árbol.
- Ningún árbol puede ser adyacente a otro árbol, vertical, horizontal o diagonal
La solución al diseño anterior es:
Nota: solo hay una solución para cada rompecabezas
Reglas adicionales:
- Los formatos de entrada y salida son opcionales.
- El resultado podría ser, por ejemplo, una lista de índices, una cuadrícula con 1/0 que indica si hay un árbol en esa posición, o una versión modificada de la entrada donde se indican los árboles
- El tiempo de ejecución debe ser determinista.
- El programa debe finalizar dentro de 1 minuto en una computadora portátil moderna razonable
- ¡Brownie señala si no haces fuerza bruta!
Casos de prueba:
aabbbb
aabbbb
aaccbb
acccdb
ecccdb
eeefff
---
aAbbbb
aabbbB
aaCcbb
acccDb
Ecccdb
eeeFff
----------
aabccc
aacccc
aaddce
aeeeee
aeeefe
eeeeee
---
aaBccc
aacccC
aadDce
Aeeeee
aeeeFe
eEeeee
----------
aaaabb
aacbbb
aadddb
addeef
ddddee
dddeee
---
aaaaBb
aaCbbb
Aadddb
addeeF
dDddee
dddEee
----------
abbbcd
abebcd
addddd
dddddd
effdff
eeffff
---
abBbcd
abebCd
Addddd
dddDdd
effdfF
eEffff
Los mismos casos de prueba en un formato que es un poco más fácil de analizar:
Test case 1:
[1,1,2,2,2,2;1,1,2,2,2,2;1,1,3,3,2,2;1,3,3,3,4,2;5,3,3,3,4,2;5,5,5,6,6,6]
Test case 2:
[1,1,2,3,3,3;1,1,3,3,3,3;1,1,4,4,3,5;1,5,5,5,5,5;1,5,5,5,6,5;5,5,5,5,5,5]
Test case 3:
[1,1,1,1,2,2;1,1,3,2,2,2;1,1,4,4,4,2;1,4,4,5,5,6;4,4,4,4,5,5;4,4,4,5,5,5]
Test case 4:
[1,2,2,2,3,4;1,2,5,2,3,4;1,4,4,4,4,4;4,4,4,4,4,4;5,6,6,4,6,6;5,5,6,6,6,6]
Respuestas:
C,
223182bytesToma la entrada como argumento en el formato dado en la pregunta. Escribe la salida en stdout como una cuadrícula de 0s con 1s donde van los árboles.
Salida de muestra:
Descompostura
Es una adaptación de mi respuesta a la versión de código más rápida de esta pregunta . No tiene tantos cortocircuitos, pero es lo suficientemente rápido como para cuadrículas de 6x6.
fuente
Clingo , 66 bytes
Ejecute con
clingo plant.lp - -c n=<n>
donde<n>
está el tamaño de la cuadrícula. El formato de entrada es una lista dec(X,Y,Z).
estados para cada celda (X
,Y
) coloreadoZ
, con 1 ≤X
,Y
,Z
≤n
, separadas por espacios en blanco opcional. La salida incluyet(X,Y)
para cada árbol en (X
,Y
).Manifestación
Para hacer que el formato de entrada / salida sea más fácil de manejar, aquí hay programas de Python para convertir y al formato dado en el desafío.
Entrada
Salida
fuente