Este es un desafío adicional para el desafío de generar rompecabezas Loopy . Es posible que desee resolver este desafío antes de intentar el desafío más difícil en el enlace anterior.
El objetivo de este desafío es validar la solución a un rompecabezas en bucle. Tome toda la documentación sobre qué es un rompecabezas en bucle del enlace anterior. Un rompecabezas en bucle resuelto está formateado de una manera muy similar a la salida de una presentación válida para el desafío "generar rompecabezas en bucle" y puede verse así:
+-+-+ +-+ +-+ +
| | | |2|3|
+-+ + + + + +-+
2| | | |2| 3|
+ + +-+ + + +-+
2| 2 1|3| |
+-+ +-+ +-+ +-+
|2 | | 1 2|
+ +-+ +-+ +-+ +
| |2 1 2|3|3| |
+ + +-+ +-+ +-+
| | |3|2 1
+ +-+ +-+-+-+-+
| 2 2 |
+-+-+-+-+-+-+-+
La ruta que constituye la solución está marcada con |
y -
caracteres entre los +
caracteres.
Especificación de entrada
Su programa recibirá un rompecabezas en bucle con una solución formateada como el ejemplo anterior como entrada. Su programa inferirá el tamaño del rompecabezas a partir de la entrada. Puede hacer los siguientes supuestos sobre la entrada:
- El rompecabezas tiene no menos de 2 y no más de 99 celdas en cualquier dirección
- Por lo tanto, cada línea tiene una longitud máxima de 199 caracteres, sin incluir los caracteres de la nueva línea.
- Por lo tanto, la entrada contiene un máximo de 99 líneas.
- cada línea puede terminar después del último carácter imprimible o puede rellenarse con espacios en blanco para que tenga una longitud de hasta 2 · y + 1 caracteres donde y es el número de celdas en dirección horizontal
- cada posición con las coordenadas x e y incluso contiene un
+
carácter - las posiciones adyacentes horizontal o verticalmente a las posiciones que contienen
+
caracteres contienen un espacio en blanco, están detrás del final de la línea o contienen un-
carácter si es adyacente horizontalmente o un|
carácter si es adyacente verticalmente - todas las otras posiciones son o bien detrás del extremo de la línea o contienen uno de los personajes
,
0
,1
,2
, o3
- todas las líneas terminan con los caracteres de línea nueva predeterminados de su plataforma
- hay exactamente una nueva línea final
La entrada se recibirá de una de las siguientes maneras:
- De entrada estándar
- Como el valor de un parámetro nombrado
p
en una solicitud HTTP POST - Como el contenido de un formulario HTML
- Como el contenido de un archivo nombrado
p
en un directorio definido por la implementación - En una implementación definida de manera en tiempo de ejecución si los cuatro primeros no están disponibles
- Codificado si su idioma no proporciona medios para recibir información
Especificación de salida
Su programa terminará para todas las entradas que coincidan con la especificación de entrada y calculará si la solución al rompecabezas es correcta. Su programa generará el resultado del cálculo como un valor booleano de una de las siguientes maneras:
- Como un estado de salida de cero (la solución es válida) o no cero (la solución no es válida)
- Como el carácter
y
(la solución es válida) on
(la solución no es válida) seguido de cero o más caracteres arbitrarios de salida de una manera definida por la implementación
El comportamiento de su programa no se especifica cuando se encuentra una entrada no formateada de acuerdo con la especificación de entrada.
Puntuación
La puntuación de su programa es el número de caracteres en su fuente, excepto los caracteres de espacios en blanco omitibles y los comentarios omitibles. Se le recomienda sangrar su envío para que sea más fácil de leer para los demás y comentar su solución para que sea más fácil de seguir.
Los envíos que no siguen la especificación de entrada o salida o generan resultados incorrectos no son válidos.
0
también hay un número válido para una celda.Respuestas:
GolfScript, 133 caracteres
Espera la entrada de STDIN e imprime
y
para una solución válida yn
para una no válida. Realiza la tarea utilizando principalmente reemplazar cadenas en la cuadrícula o con versiones rotadas de la cuadrícula.Código anotado:
fuente
C #
803579bytesEl programa completo, se lee desde STDIN, debe hacer frente a cualquier esquema común de nueva línea siempre que tenga avances de línea. Gracias a HackerCow por señalar que no tengo que agregar una nueva línea en una pregunta diferente, lo que me lleva a eliminarla aquí y guardar 4 bytes
Código de golf:
El código realiza 3 verificaciones, primero verificando el número de líneas alrededor de cada número y que cada cruce tiene 0 o 2 líneas que salen de él, luego que todas las líneas están unidas.
Código formateado:
fuente
Cobra - 514
Comprueba si cada número tiene el número correcto de líneas al lado, y luego recorre un camino alrededor de las líneas y comprueba si faltó alguna.
fuente