Kako izrađujemo svoje nonograme
Svaka zagonetka ovdje počinje kao obična slika, a završava kao mreža koju možete riješiti isključivo logikom. Između, prolazi kroz automatizirani proces koji rasterizira sliku, provjerava je li rezultat doista rješiv i odbacuje one koje nisu. Ova stranica pošteno prolazi kroz taj proces — uključujući dijelove koji ne uspijevaju, jer se najveći dio posla sastoji u odbacivanju loših zagonetki, a ne u izradi dobrih.
1. Počinje slikom
Nonogram je uvijek samo crno-bijela silueta — bez sjenčanja, bez boje, bez unutarnjih detalja. Zato je prvi korak izbor izvorne slike čiji se oblik jasno čita pri sićušnoj razlučivosti: životinja, komad voća, znak zodijaka, kućni predmet. Radimo s vektorskom grafikom (SVG), prozirnim PNG datotekama i običnim fotografijama, organiziranima u tematske pakete resursa, kao i sa slikama unesenima putem pretrage slika unutar aplikacije.
Ono što je u ovoj fazi važno nije koliko je slika lijepa — nego koliko dobro njezina kontura preživljava sabijanje na mrežu 15×15 ili 20×20. Upadljiv, dobro izdvojen oblik funkcionira. Prenatrpana scena s mnogo malih preklapajućih dijelova gotovo nikada, a ispod ćemo vidjeti zašto.
2. Pretvaranje slike u mrežu
Slika se rasterizira pravom bibliotekom za obradu slika (istom onom na koju se preglednici oslanjaju za SVG), a zatim se svodi na jednu crno-ili-bijelu vrijednost po ćeliji. Ne postoji jedan „ispravan” način da se to učini, pa proces isprobava nekoliko: oslanjajući se na vlastitu prozirnost slike ondje gdje je ima, na običnu svjetlinu (tamno = ispunjeno), ili — za svijetao, šaren motiv na jednostavnoj pozadini, gdje ga sama svjetlina jedva izdvaja — na udaljenost boje od pozadine. Svijetlonarančasta lisica na bijelome po svjetlini je gotovo bijela, ali po boji daleko od nje; maska udaljenosti boje čisto je izdvaja.
Granica između „ispunjeno” i „prazno” bira se automatski pomoću Otsu's method, standardne tehnike koja pronalazi prag svjetline koji najčišće dijeli sliku u dvije skupine. Budući da ne postoji način da se unaprijed zna koja veličina, izrezak i prag će se najbolje čitati, proces generira mnogo kandidatskih mreža po slici — različite veličine, različiti pragovi — svaku izrezuje na njezin ispunjeni sadržaj i uklapa oblik u proporcije mreže, tako da široka kruna dobije široku mrežu umjesto da bude sabijena u kvadrat.
3. Provjera može li se doista riješiti
Slika koja čovjeku izgleda u redu nije automatski valjana zagonetka. Pravi nonogram mora biti rješiv isključivo iz svojih tragova redaka i stupaca i — što je presudno — mora imati točno jedno rješenje. Ako dva različita ispunjena uzorka zadovoljavaju svaki trag, zagonetka je dvosmislena i nepoštena, jer netko tko je rješava po čistoj logici može sasvim ispravno stići do „pogrešne” slike.
Zato se svaki kandidat predaje rješavaču: on primjenjuje ista zaključivanja redak po redak koja bi primijenio i čovjek, a ondje gdje sama logika zapne, pribjegava iscrpnom pretraživanju kako bi prebrojao koliko potpunih rješenja postoji. Svaka mreža s nula rješenja (proturječna) ili više od jednog rješenja (dvosmislena) odbacuje se na licu mjesta. Ova provjera jedinstvenosti najvažnija je vrata u cijelom procesu.
4. Osiguravanje da je to logika, a ne pogađanje
Imati jedno rješenje nije sasvim dovoljno. Zagonetka može biti tehnički jedinstvena, ali dostižna samo pokušajem i pogreškom — ispunjavanjem ćelije, praćenjem duboko u mrežu i vraćanjem kada dođe do proturječja. To nije rješavanje; to je pogađanje, i stvara frustrirajuću zagonetku.
Da bismo to uhvatili, klasificiramo koliko je teško promisliti svaku zagonetku. Zagonetke koje proizlaze iz jednostavne logike redak po redak su „jednostavne”. Druga, dobro proučena razina dedukcije (temeljena na objavljenom istraživanju o težini nonograma autora Batenburg and Kosters) rješava većinu ostatka bez ikakva pogađanja. Sve što se i dalje ne može razriješiti bez pokušaja i pogreške označava se kao zahtijeva-pogađanje — a za svakodnevni katalog, one se odlažu u stranu umjesto da se objave.
5. Zašto mnoge slike nikad ne stignu dotle
Prije bilo kakva posla rješavanja, proces također predviđa je li sliku uopće vrijedno pokušati, koristeći dva gruba ali poštena signala. Jedan je razdvojivost: koliko se čisto slika uopće dijeli na dva tona — mutan izvor niskog kontrasta loša je oklada pri bilo kojoj veličini. Drugi je uklapanje detalja naspram razlučivosti: slika s daleko više sitnih obilježja nego što mreža ima ćelija jednostavno će se urušiti u mrlju.
Konkretan primjer iz našeg vlastitog testiranja: prava fotografija Eiffelova tornja dala je kandidata 40×40 koji je prošao svaku provjeru rješivosti — jedno jedinstveno rješenje, razuman omjer ispunjenosti — ali se prikazao kao pun pravokutnik. Rešetkasti detalj tornja i nered ispod njega spljoštili su se u jedan nediferencirani blok. Tehnički valjan nonogram; vizualno beskoristan. Upravo su takvi slučajevi ono što ove prethodne provjere, uz ljudski pogled, trebaju zaustaviti. Da budemo jasni o granicama: ovdje nema modela vida — proces nikad ne prepoznaje *što* je na slici, već samo mjeri koliko se dobro njezin oblik pretvara. Zato je konačna odluka i dalje na čovjeku.
6. Ocjena, i posljednji ljudski pogled
Zagonetke koje prođu kroz svaka vrata dobivaju ocjenu težine na temelju svoje razine rješavanja i statistike oblika (koliko je mreža ispunjena, izlazi li slika izvan rubova i tako dalje), što ih razvrstava u zbirke lakih, srednjih i teških. Zatim čovjek u našem uređivaču mreža otvara one namijenjene katalogu, provjerava čita li se slika doista kao ono što bi trebala biti, i prilagođava ili odbacuje sve što su automatske provjere propustile, a nisu smjele.
To je namjerno neglamurozan proces, i u tome je poanta: automatizacija postoji kako bi jamčila poštenje — jedno rješenje, rješivo logikom — dok čovjek čuva ono što računalo ne može procijeniti, a to je je li gotova slika dobra.
To je cijeli proces, minus kôd. Ako biste radije riješili jednu nego čitali o tome kako je izrađena, današnja je zagonetka dobro mjesto za početak.
