Escriba un programa para producir un archivo que contenga una cuadrícula de crucigramas que el usuario pueda imprimir y resolver el rompecabezas.
Entrada
Un nombre de archivo que representa un archivo de cuadrícula de crucigramas y, opcionalmente, un segundo nombre de archivo que representa un archivo de numeración de crucigramas. La entrada debe ser aceptada por un medio convencional para su entorno de programación: argumentos de línea de comando, entrada estándar, formularios web, etc.
Puede suponer que el crucigrama ha sido validado , y si utiliza un archivo de numeración que corresponde a la cuadrícula proporcionada .
Formato de archivo de cuadrícula: la primera línea consta de dos constantes enteras separadas por espacios en blanco M y N. A continuación de esa línea hay M líneas que consisten en N caracteres (más una nueva línea) seleccionados entre [#A-Z ]
. Estos caracteres se interpretan de tal manera que '#'
indican un cuadrado bloqueado, ' '
un cuadrado abierto en el rompecabezas sin contenido conocido y cualquier letra un cuadrado abierto que contenga esa letra.
Formato del archivo de numeración Las líneas que comienzan con '#' se ignoran y pueden usarse para comentarios. Todas las demás líneas contienen una pestaña separada triplete i
, m
, n
donde i
representa un número que va a imprimirse en la parrilla, y m
y n
representan la fila y columna de la plaza donde debe ser impreso. El número de filas y columnas comienza en 1.
Salida
El resultado será un archivo que el usuario puede imprimir y trabajar con un crucigrama. Se aceptarán ASCII, postscript, pdf, png y cualquier otro formato razonable, pero todos deben cumplir con estas reglas:
- Debe haber una regla alrededor del rompecabezas completo y entre cada par de cuadrados.
- Los cuadrados bloqueados deben rellenarse a oscuras
- En el cuadro de juego que representa el comienzo de una pista numerada (cruzada o hacia abajo) se debe proporcionar un número en la esquina superior izquierda del cuadrado, dejando la mayor parte del cuadrado en blanco para que la obra escriba. Tenga en cuenta que la cuadrícula típica publicado en los documentos tendrá muchas decenas de pistas y puede tener más de 100.
La salida será solo de la cuadrícula, sin la lista de pistas.
La salida debe enviarse a un destino convencional (un archivo cuyo nombre se deriva del nombre de archivo de entrada, producido como una página web, etc.)
Caso de prueba
Dada una entrada de
5 5
# ##
#
#
#
## #
la esquina inicial de una salida ASCII aceptable podría verse así
+-----+-----+-----+---
|#####|1 |2 |###
|#####| | |###
|#####| | |###
+-----+-----+-----+---
|#####|3 | |4
|#####| | |
|#####| | |
+-----+-----+-----+---
|6 | |#####|
| | |#####|
Aquellos que utilizan formatos gráficos deben inspirarse en las fuentes impresas habituales.
Esquema de numeración
Una cuadrícula numerada correctamente tiene las siguientes propiedades:
- La numeración comienza en 1.
- Ninguna columna o tramo de cuadrados abiertos está sin numerar.
- Los números se encontrarán en orden de conteo escaneando de la fila superior a la inferior tomando cada fila de izquierda a derecha.
Aparte
Este es el tercero de varios desafíos relacionados con crucigramas. Planeo usar un conjunto consistente de formatos de archivo en todo momento y construir un conjunto respetable de utilidades relacionadas con crucigramas en el proceso.
Retos anteriores en esta serie: