Cómo verificar si un cuadrado dibujado está cerrado (tiene los 4 lados dibujados)

1 x 1 parece fácil:

Encuentre el algoritmo de relleno (inundación) y modifíquelo un poco para contar el número de puntos y renunciar (no encontrado) si el número crece más que el área máxima esperada (en píxeles, un poco más grande que el área cuadrada para dar cuenta de pequeños irregularidades)

Comience en el medio de cada celda, y después de la prueba (por ejemplo, con rojo, suponiendo que las líneas sean azules y blancas de papel), puede hacerlo nuevamente con blanco para despejar y probar el siguiente cuadrado.

(Puede mejorar el algoritmo: al salir del cuadrado de la cuadrícula actual (al exceder el conteo), marque también como no ajustado el cuadrado donde se ha producido esa condición.

Notas:

  1. Los colores de arriba son solo ejemplos. Puede usar banderas, booleanos, etc.
  2. Puede parecer un poco intensivo en informática, pero para JS, Haskell o Python no debería haber ningún problema … ¡C, C ++, C #, Java, etc. deberían ser aún más rápidos!
  3. También puede configurar el tamaño de píxel a la tolerancia de líneas cercanas.

La pregunta no es muy clara, pero cada significado que puedo discernir de la pregunta tiene una respuesta.

La lógica probablemente implicaría la recursividad. Dado cualquier punto donde las líneas de la cuadrícula se encuentran y hay líneas que emanan de ese punto, puede medir las longitudes de las líneas y verificar si existen líneas correspondientes desde cualquier punto en las líneas creadas por una pendiente igual a 1 o -1.

Si está mirando esto para ver qué mosaicos son adyacentes, entonces la respuesta es (x-1, y), (x + 1, y) (x, y + 1), (x, y-1).

Si está tratando de encontrar qué cuadrados de 1 unidad de longitud se han “cerrado” después de agregar una línea de 1 unidad de longitud (como en los puntos y cuadros del juego), podría usar un patrón similar al anterior para trazar los dos cuadrados adyacentes a la línea se acaba de agregar para ver si un cuadrado previamente no cerrado (debe realizar un seguimiento de los cuadrados que se cerraron anteriormente o si va a tener muchas anomalías) ahora está cerrado.

Si aclaras la pregunta, editaré mi respuesta para mostrarte la lógica adecuada.