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 cuarto 4A
justo después 4D
.