Come realizziamo i nostri nonogrammi
Ogni rompicapo qui inizia come un'immagine qualunque e finisce come una griglia che puoi risolvere con la sola logica. Nel mezzo, attraversa una pipeline automatizzata che rasterizza l'immagine, verifica se il risultato è davvero risolvibile e scarta quelli che non lo sono. Questa pagina ripercorre onestamente quel processo — comprese le parti che falliscono, perché la maggior parte del lavoro sta nello scartare i rompicapi cattivi piuttosto che nel realizzare quelli buoni.
1. Tutto inizia con un'immagine
Un nonogramma è sempre e solo una silhouette in bianco e nero — nessuna sfumatura, nessun colore, nessun dettaglio interno. Quindi il primo passo è scegliere un'immagine di partenza la cui forma si legga chiaramente a una risoluzione minuscola: un animale, un frutto, un segno zodiacale, un oggetto di uso quotidiano. Lavoriamo con grafica vettoriale (SVG), PNG trasparenti e semplici foto, organizzati in pacchetti tematici di risorse, oltre a immagini recuperate tramite una ricerca di immagini integrata nell'app.
Ciò che conta in questa fase non è quanto sia bella l'immagine — è quanto bene il suo contorno sopravviva a essere schiacciato in una griglia 15×15 o 20×20. Una forma decisa e ben separata funziona. Una scena affollata con molte piccole parti sovrapposte non funziona quasi mai, e vedremo di seguito perché.
2. Trasformare un'immagine in una griglia
L'immagine viene rasterizzata con una vera libreria di imaging (la stessa su cui i browser si appoggiano per l'SVG), poi ridotta a un unico valore bianco o nero per cella. Non c'è un unico modo "corretto" di farlo, così la pipeline ne prova diversi: basandosi sulla trasparenza propria dell'immagine dove ne ha, sulla semplice luminosità (scuro = pieno) o — per un soggetto luminoso e colorato su uno sfondo uniforme, dove la sola luminosità lo separa a malapena — sulla distanza di colore dallo sfondo. Una volpe arancione chiaro su bianco è quasi bianca in luminosità, ma lontana da esso in colore; la maschera di distanza di colore la isola in modo pulito.
La soglia tra "pieno" e "vuoto" viene scelta automaticamente con Otsu's method, una tecnica standard che trova la soglia di luminosità che divide l'immagine nel modo più netto in due gruppi. Poiché non c'è modo di sapere in anticipo quali dimensione, ritaglio e soglia si leggeranno meglio, la pipeline genera molte griglie candidate per immagine — dimensioni diverse, soglie diverse — ritaglia ciascuna al suo contenuto pieno e adatta la forma alle proporzioni della griglia, così che una corona larga ottenga una griglia larga invece di essere schiacciata in un quadrato.
3. Verificare che si possa davvero risolvere
Un'immagine che a un essere umano sembra a posto non è automaticamente un rompicapo valido. Un vero nonogramma deve essere risolvibile solo dagli indizi delle sue righe e colonne e — cosa cruciale — deve avere esattamente una soluzione. Se due diversi schemi pieni soddisfano entrambi ogni indizio, il rompicapo è ambiguo e sleale, perché chi lo risolve seguendo la pura logica potrebbe arrivare correttamente all'immagine "sbagliata".
Perciò ogni candidato viene dato in pasto a un solver: applica le stesse deduzioni riga per riga che farebbe una persona e, dove la sola logica si arena, ripiega su una ricerca esaustiva per contare quante soluzioni complete esistono. Qualsiasi griglia con zero soluzioni (contraddittoria) o più di una soluzione (ambigua) viene respinta all'istante. Questo controllo di unicità è il singolo cancello più importante dell'intera pipeline.
4. Assicurarsi che sia logica, non tentativi
Avere una soluzione non basta del tutto. Un rompicapo può essere tecnicamente unico ma raggiungibile solo per tentativi ed errori — riempiendo una cella, seguendola in profondità nella griglia e tornando indietro quando si contraddice. Questo non è risolvere; è tirare a indovinare, e rende il rompicapo frustrante.
Per cogliere questo, classifichiamo quanto sia difficile ragionare ogni rompicapo. I rompicapi che escono da una lineare logica riga per riga sono "semplici". Un secondo livello di deduzione, ben studiato (basato sulla ricerca pubblicata sulla difficoltà dei nonogrammi di Batenburg and Kosters), gestisce la maggior parte del resto senza alcun tentativo a indovinare. Tutto ciò che ancora non si può risolvere senza tentativi ed errori viene contrassegnato come che richiede tentativi — e per il catalogo quotidiano, quelli vengono messi da parte anziché pubblicati.
5. Perché molte immagini non ce la fanno mai
Prima di qualsiasi lavoro di risoluzione, la pipeline prevede anche se un'immagine valga persino la pena di tentare, usando due segnali grezzi ma onesti. Uno è la separabilità: quanto nettamente l'immagine si divide in due toni — una fonte torbida e a basso contrasto è una cattiva scommessa a qualsiasi dimensione. L'altro è l'adeguatezza tra dettaglio e risoluzione: un'immagine con molte più caratteristiche fini di quante celle abbia la griglia collasserà semplicemente in una macchia.
Un esempio concreto dai nostri stessi test: una foto reale della Torre Eiffel ha prodotto un candidato 40×40 che ha superato ogni controllo di risolvibilità — una soluzione unica, un rapporto di riempimento ragionevole — ma si è reso come un rettangolo pieno. Il traliccio della torre e il disordine sottostante si sono appiattiti in un unico blocco indifferenziato. Tecnicamente un nonogramma valido; visivamente inutile. Casi come questo sono esattamente ciò che questi controlli preliminari, insieme a un'occhiata umana, sono lì a fermare. Per essere chiari sui limiti: qui non c'è alcun modello di visione — la pipeline non riconosce mai *cosa* c'è in un'immagine, misura solo quanto bene la sua forma si converte. Ecco perché la decisione finale è ancora di una persona.
6. Una valutazione e un ultimo sguardo umano
I rompicapi che superano ogni cancello ricevono una valutazione di difficoltà dal loro livello di risoluzione e dalle statistiche di forma (quanto è pieno il griglia, se l'immagine esce dai bordi e così via), che è ciò che li ordina in raccolte facili, medie e difficili. Poi una persona apre nel nostro editor di griglie quelli destinati al catalogo, verifica che l'immagine si legga davvero come ciò che dovrebbe essere, e regola o scarta tutto ciò che i controlli automatici hanno lasciato passare ma non avrebbero dovuto.
È un processo deliberatamente poco affascinante, ed è proprio questo il punto: l'automazione esiste per garantire l'equità — una soluzione, risolvibile con la logica — mentre un essere umano custodisce ciò che un computer non può giudicare, ovvero se l'immagine finita sia valida.
Questa è l'intera pipeline, meno il codice. Se preferisci risolverne uno piuttosto che leggere di come è costruito, il rompicapo di oggi è un buon punto di partenza.
