Cómo lee el solucionador de Meowdoku un tablero desde una captura
El solucionador de Meowdoku recibe algo poco habitual: una imagen del puzle, no el puzle mismo. Antes de resolverlo debe localizar el tablero, contar sus celdas y decidir qué celdas comparten color. Así toma cada decisión y estos son sus límites.
Lo difícil no es leer los colores
Una captura de Meowdoku contiene mucho más que el tablero: cabecera, fichas de reglas, cronómetro y, a menudo, la barra de estado del teléfono. El tablero es un bloque cuadrado en algún punto central, con una posición y un tamaño que dependen del dispositivo, y la imagen no trae etiquetas.
Antes de interpretar un solo color hay que resolver tres incógnitas. Fallar en cualquiera de ellas no produce una respuesta un poco imprecisa: produce otro puzle resuelto con total seguridad.
Todo se ejecuta en tu navegador
La captura nunca se sube. La imagen se dibuja en un lienzo, se leen sus píxeles y todos los pasos siguientes se ejecutan sobre esos números dentro de tu propia pestaña. Ningún servidor ve la imagen ni guarda una copia.
Una imagen que no se envía no necesita almacenarse ni borrarse después. Además, al no haber un viaje por la red, el tablero aparece en bastante menos de un segundo.
Primero se reduce la imagen para que su lado mayor mida como máximo 900 píxeles. El proceso solo necesita un color representativo por celda, no una fotografía nítida, y el trabajo por píxel disminuye con el cuadrado de la escala.
Paso 1: encontrar el tablero
El solucionador empieza estimando el fondo. Toma muestras de la franja exterior del 7% en los cuatro lados y calcula la mediana de cada canal, descartando antes los píxeles muy vivos para que un banner de color en una esquina no desvíe la estimación.
Después clasifica cada píxel como fondo o no fondo y cuenta los que no son fondo fila por fila. Así obtiene un perfil de densidad: casi cero en los márgenes, alto en el tablero e intermedio en una cabecera. Las rachas de filas densas son candidatas. Los pequeños valles de las líneas de cuadrícula se unen, porque una línea de un píxel no es un hueco; el espacio real sobre el tablero no se une y deja fuera las fichas de reglas.
La prueba decisiva es la forma cuadrada. Cada candidato se examina en el otro eje y solo sobrevive si ancho y alto difieren aproximadamente menos de un tercio y ocupa al menos el 3% del encuadre. Los banners y barras son anchos y bajos; en una captura de Meowdoku, el tablero es lo único cuadrado.
Si no destaca ningún cuadrado, el solucionador supone que la imagen ya está recortada al tablero y usa todo el encuadre. Es un fallo razonable: la imagen que no puede localizar suele ser la que no necesitaba localizar.
Paso 2: contar la cuadrícula
Saber dónde está el tablero no revela si es 7×7 o 9×9. El solucionador lo recorre en 400 pasos y mide en cada uno cuánto cambia el color, promediando 48 líneas paralelas del otro eje para que un solo gato oscuro no parezca un borde. Los límites de las celdas aparecen como picos regulares.
En vez de medir la distancia entre picos, prueba hipótesis. Para cada N de 4 a 12 calcula dónde caerían los N−1 límites interiores, busca un pico cerca y puntúa cuánto encajan. Gana el N que mejor explica el perfil.
Los dos ejes se miden por separado y luego se reconcilian porque un tablero real es cuadrado. Si el pase horizontal dice 8 y el vertical 7, uno omitió una línea tenue y se toma el número mayor.
Paso 3: muestrear cada celda en un anillo, no en el centro
Localizado el tablero y contado el grid, hace falta un color por celda. Lo natural sería leer el píxel central.
Es justo el peor píxel: allí se dibujan el gato y la ✕. En un tablero parcialmente resuelto, el muestreo central confundiría muchas celdas con el color del símbolo e inventaría regiones que no existen.
Por eso se toman muestras en tres anillos concéntricos, al 28%, 36% y 43% del radio, con dieciséis ángulos por anillo: 48 muestras por celda. El anillo queda dentro del borde y fuera del símbolo. La mediana de cada canal descarta las pocas muestras que caen en un borde suavizado o un brillo, en vez de mezclarlas.
Paso 4: agrupar los colores en exactamente N regiones
Ahora hay N×N colores que convertir en regiones. El problema habitual de una agrupación es no saber cuántos grupos buscar: una estimación errónea arruina el resultado sin avisar.
Las reglas de Meowdoku dan la respuesta. Un tablero N×N tiene exactamente N regiones conectadas; uno de 9×9 tiene nueve, nunca ocho ni diez. Así el problema queda cerrado: k-means con k conocido. Por eso esta etapa es fiable aunque las dos anteriores sean aproximaciones.
Los centros iniciales se eligen del más lejano al más lejano para repartirlos entre los tonos presentes, y la selección es determinista. La misma captura siempre genera el mismo tablero; un solucionador que respondiera distinto a la misma imagen sería peor que ninguno.
Finalmente se renumeran las regiones en orden de lectura, empezando por la que contiene la celda superior izquierda. No cambia la solución; solo presenta el tablero como lo numeraría una persona.
Paso 5: resolver y comprobar una segunda solución
Con el tamaño y la cuadrícula de regiones, resolver es la parte directa: se usa el mismo motor de restricciones que crea los tableros. La decisión interesante es pedir dos soluciones, no una.
Un tablero bien leído tiene una única solución. Dos soluciones indican que alguna celda se asignó a la región equivocada; ninguna solución indica que las restricciones se contradicen por otra lectura errónea. Buscar una segunda respuesta convierte el resultado en una comprobación de la lectura.
Dónde falla y por qué puedes pintar
Todo lo anterior al paso 4 es una aproximación y puede fallar. Estos son los casos reales más comunes:
- Dos tonos próximos en una captura comprimida. Los artefactos JPEG pueden hacer que k-means fusione dos regiones y parta una tercera para mantener N grupos.
- Una foto de la pantalla en vez de una captura. El ángulo vuelve irregular el espaciado y rompe tanto el conteo como el muestreo en anillo.
- Un recorte que conserva parte de la interfaz. Media ficha de regla puede desplazar unos píxeles el cuadro y llevar los anillos a la celda vecina.
- Un tablero casi terminado. Cuantos más gatos y ✕ hay, más superficie está cubierta. Los anillos ayudan, pero no hacen magia.
La herramienta de pintar forma parte del diseño
Por eso puedes recolorear cualquier celda arrastrando y el solucionador no trabaja hasta que existen exactamente N regiones distintas; también te dice cuántas hay. Esa barrera detiene una lectura fusionada o dividida antes de mostrar una respuesta falsa.
El tablero se redibuja con los colores tomados de tu captura, no con la paleta del juego, para que puedas revisarlo de un vistazo. Si una celda se ve del color equivocado, lo está, y un arrastre lo corrige. La detección hace el noventa y tantos por ciento tedioso; tú aportas el criterio final.
Pruébalo con uno de tus tableros
Haz una captura de un tablero en el que estés atascado, llévala al solucionador y revisa qué celdas interpreta mal. Los errores suelen aparecer justo en los casos descritos aquí.
El solucionador funciona por completo en tu navegador. Las capturas se leen en tu dispositivo y nunca se suben.