Chris, un adicto a los crucigramas crípticos, tiene un algoritmo establecido para el orden en que los resuelve.
Utilizaremos la imagen de arriba como guía.
- Chris siempre comienza con la primera pista cruzada, en este caso 1 Across. Chris es un entusiasta capaz de los crucigramas, por lo que se supone que siempre sabrá la respuesta a la pista en la que está trabajando.
- Una vez que Chris complete una pista, verificará todas las pistas adyacentes a las que ha completado (en el primer caso, 1 Down, 2 Down y 3 Down) y luego completará la pista con el número más bajo. Si no hay pistas contiguas, iría al paso 3.
- Si la pista es tal que el siguiente número (como se describe en el Paso 3) tiene una pista cruzada y una pista descendente, primero completará la pista cruzada (¡100% de certeza, esto limita con el TOC!)
- Si no hay pistas contiguas, irá a la siguiente pista disponible que sea la siguiente en número (al otro lado o hacia abajo)
- Repita desde el Paso 2 hasta completar todas las pistas.
Y aquí es donde se trata de ustedes, queridos codificadores. Se le ha encomendado la tarea de crear código que, al recibir una plantilla de crucigrama, proporcione resultados que describan el orden de las pistas en función del algoritmo de Chris para resolverlo.
El código aceptará la entrada de una plantilla de crucigrama, en forma de un .
cuadrado blanco y #
otro negro.
Ejemplo :
.....#.........
.#.#.#.#.#.#.#.
...#...#.......
.#.#.#.#.#.#.#.
....#..........
##.#.#.#.#.#.#.
......#........
.###.#####.###.
........#......
.#.#.#.#.#.#.##
..........#....
.#.#.#.#.#.#.#.
.......#...#...
.#.#.#.#.#.#.#.
.........#.....
La entrada puede ser a través de: a) un archivo leído de la representación del crucigrama, o b) por entrada de línea de cada línea del crucigrama, seguido de \n
, con un segundo que \n
indica EOF.
Y luego determinará el método por el cual Chris lo resolvería de acuerdo con el algoritmo descrito anteriormente.
Salida debe estar en el formato de una serie de instrucciones separadas por comas en forma de n(A|D)
, donde n
está el número de pista seguido de A
para cruzar o D
para abajo.
Entonces, en el ejemplo anterior (tanto de la imagen como de la plantilla de ejemplo, que son la misma), la salida sería:
1A,1D,2D,3D,9A,10A,4D,5D,6D,7D,8D,11A,12A,13A,15A,14D,15D,16A,17A,18D,19D,20A,21D,23A,22D,24A,25D,27A,28A,26D,29A,30A,31A
El código más corto gana ...
Pruebas
Debe proporcionar con su envío el código, un recuento de bytes, así como uno de los cuatro casos de prueba representados en el .
#
formato y , así como la salida generada a partir de esta entrada. Hay cuatro casos de prueba, los tres a continuación, así como la plantilla de ejemplo anterior.
Ejemplos de casos de prueba:
Caso de prueba 1
.....#
.#.#.#
...#..
.#.#.#
.....#
##.#..
Salida: 1A,1D,2D,3D,4A,5A,6A,7A
Caso de prueba 2
.....#..
.#.##..#
.#....#.
...##.#.
.####...
......##
Salida: 1A,1D,2D,5A,4D,4A,3D,3A,7A,8A,6D,9A
Caso de prueba 3
.........#
#.#.#.#.#.
....#...#.
#...#.#.#.
..###.#.#.
.#....#...
.#####...#
.....###..
Salida: 1A,2D,3D,4D,5D,7A,8A,9A,10A,11A,11D,12A,13A,6D,14D,15A,16A,17A
Caso de prueba 4
.....#.........
.#.#.#.#.#.#.#.
...#...#.......
.#.#.#.#.#.#.#.
....#..........
##.#.#.#.#.#.#.
......#........
.###.#####.###.
........#......
.#.#.#.#.#.#.##
..........#....
.#.#.#.#.#.#.#.
.......#...#...
.#.#.#.#.#.#.#.
.........#.....
Salida: 1A,1D,2D,3D,9A,10A,4D,4A,5D,6D,7D,8D,11A,12A,13A,15A,14D,15D,16A,17A,18D,19D,20A,21D,23A,22D,24A,25D,27A,28A,26D,29A,30A,31A
¡Buena suerte!
17A
al final. También el cuarto4A
justo después4D
.Respuestas:
GolfScript, 154 caracteres
La entrada debe proporcionarse en STDIN. Los ejemplos arrojan los siguientes resultados (verifique en línea ):
fuente
votes++
Mathematica
806477(Parece que hay una falla en el orden de los pasos de la solución. Estoy investigando esto).
Golfed
La función
q
encuentra el orden de las soluciones de crucigramas.Sin golf
board
muestra el crucigrama. El código no está incluido en el recuento de caracteres.q
Aquí se toman prestadas varias subfunciones .Casos de prueba
1
2
3
4 4
fuente
3A
, no debería estar justo después del2D
porque todavía no hay una pista. También las otras soluciones muestran este efecto.5A
tiene una pista y, por lo tanto, debe ser favorecido3A
.ToString
dos veces