Validar una cuadrícula de crucigramas propuesta.
Las entradas deben ser programas completos que simplemente prueben una cuadrícula propuesta para determinar si cumple con un conjunto de condiciones para hacer felices a los solucionadores de crucigramas.
Entrada
La entrada será el nombre de un archivo que representa la cuadrícula de crucigramas. El nombre de archivo de entrada se puede pasar como argumento, en la entrada estándar o por otros medios convencionales que no sean la codificación fija.
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.
Salida
El programa no debe producir ninguna salida en cuadrículas válidas y salir con un estado de terminación normal. Si la cuadrícula propuesta falla, el programa debería generar un mensaje de error de diagnóstico y salir con un estado de terminación anormal (es decir, no 0 en Unix) si su entorno de ejecución lo admite. El mensaje de error debe indicar qué condición de validez se viola y la ubicación del cuadrado infractor; Usted es libre de elegir los medios para transmitir estos hechos.
Condiciones de validez
Las cuadrículas válidas no tendrán respuestas (cruzadas o hacia abajo) que tengan solo 1 carácter (crédito adicional por hacer que la longitud mínima sea un parámetro de entrada) y exhibirán la simetría habitual. La simetría habitual significa que el crucigrama permanece igual después (tres descripciones equivalentes de la misma operación):
- reflexión a través de su propio centro
- reflejo tanto vertical como horizontalmente
- Rotación de 180 grados
Prueba de entrada y salida esperada
Pases
5 5
# ##
#
#
#
## #
Falla en la respuesta corta:
5 5
## ##
#
#
#
## ##
Falla en la simetría:
5 5
# ##
#
#
# #
## #
Aparte
Este es el segundo 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. Por ejemplo, un rompecabezas posterior requerirá imprimir una versión ASCII del crucigrama basado en la entrada y salida de este rompecabezas.
Retos anteriores en esta serie: