Jak vytváříme naše nonogramy

Každý hlavolam zde začíná jako obyčejný obrázek a končí jako mřížka, kterou lze vyřešit jen pomocí logiky. Mezitím projde automatizovaným kanálem zpracování, který obrázek rasterizuje, otestuje, zda je výsledek skutečně řešitelný, a zahodí ty, které nejsou. Tato stránka poctivě prochází tímto procesem — včetně částí, které selžou, protože většina práce spočívá v odmítání špatných hlavolamů, nikoli ve vytváření dobrých.

1. Všechno začíná obrázkem

Nonogram je vždy jen černobílá silueta — žádné stínování, žádná barva, žádné vnitřní detaily. Prvním krokem je tedy výběr zdrojového obrázku, jehož tvar se jasně čte při nepatrném rozlišení: zvíře, kus ovoce, znamení zvěrokruhu, předmět z domácnosti. Pracujeme s vektorovou grafikou (SVG), průhlednými PNG a obyčejnými fotografiemi, uspořádanými do tematických balíčků prostředků, a také s obrázky získanými přes vyhledávání obrázků zabudované v aplikaci.

V této fázi nezáleží na tom, jak je obrázek pěkný — záleží na tom, jak dobře jeho obrys přežije zmáčknutí do mřížky 15×15 nebo 20×20. Výrazný, dobře oddělený tvar funguje. Rušná scéna s mnoha malými překrývajícími se částmi téměř nikdy nefunguje, a níže uvidíme proč.

2. Proměna obrázku v mřížku

Obrázek se rasterizuje skutečnou obrazovou knihovnou (tou samou, o kterou se prohlížeče opírají u SVG), a poté se zredukuje na jedinou černou nebo bílou hodnotu na buňku. Neexistuje jediný "správný" způsob, jak to udělat, takže kanál zpracování jich zkouší několik: podle vlastní průhlednosti obrázku tam, kde ji má, podle prosté jasnosti (tmavé = vyplněné) nebo — u jasného, barevného objektu na jednobarevném pozadí, kde jej samotná jasnost sotva oddělí — podle barevné vzdálenosti od pozadí. Světle oranžová liška na bílém je jasností téměř bílá, ale barvou od ní daleko; maska barevné vzdálenosti ji čistě izoluje.

Hranice mezi "vyplněným" a "prázdným" se volí automaticky pomocí Otsu's method, standardní techniky, která najde práh jasnosti, jenž rozdělí obrázek nejčistěji do dvou skupin. Protože není možné předem vědět, která velikost, ořez a práh se budou číst nejlépe, kanál zpracování generuje mnoho kandidátních mřížek na obrázek — různé velikosti, různé prahy — každou ořeže na její vyplněný obsah a přizpůsobí tvar proporcím mřížky, takže široká koruna dostane širokou mřížku, místo aby byla vmáčknuta do čtverce.

3. Kontrola, zda jej lze skutečně vyřešit

Obrázek, který člověku připadá v pořádku, není automaticky platný hlavolam. Skutečný nonogram musí být řešitelný pouze z nápověd svých řádků a sloupců a — což je zásadní — musí mít přesně jedno řešení. Pokud dva různé vyplněné vzory splňují všechny nápovědy, hlavolam je nejednoznačný a nefér, protože ten, kdo jej řeší čistou logikou, by mohl zcela správně dospět k "nesprávnému" obrázku.

Každý kandidát je proto předán řešiteli: uplatňuje stejné dedukce řádek po řádku, jaké by dělal člověk, a tam, kde samotná logika uvázne, se uchýlí k vyčerpávajícímu prohledávání, aby spočítal, kolik úplných řešení existuje. Jakákoli mřížka s nulovým počtem řešení (rozporná) nebo více než jedním řešením (nejednoznačná) je na místě zamítnuta. Tato kontrola jedinečnosti je tou nejdůležitější branou v celém kanálu zpracování.

4. Ujištění, že jde o logiku, ne o hádání

Mít jedno řešení tak úplně nestačí. Hlavolam může být technicky jedinečný, ale dosažitelný pouze metodou pokus-omyl — vyplněním buňky, sledováním hluboko do mřížky a návratem zpět, když si protiřečí. To není řešení; to je hádání a dělá to z hlavolamu frustrující zážitek.

Abychom to zachytili, klasifikujeme, jak obtížné je každý hlavolam promyslet. Hlavolamy, které vyplynou z přímočaré logiky řádek po řádku, jsou "jednoduché". Druhá, dobře prostudovaná úroveň dedukce (založená na publikovaném výzkumu obtížnosti nonogramů od Batenburg and Kosters) zvládne většinu zbytku bez jakéhokoli hádání. Vše, co stále nelze vyřešit bez metody pokus-omyl, je označeno jako vyžadující hádání — a pro každodenní katalog se takové odloží stranou, místo aby se publikovaly.

5. Proč se mnoho obrázků nikdy nedostane dál

Ještě před jakoukoli prací na řešení kanál zpracování také předpovídá, zda vůbec stojí za to obrázek zkusit, a to pomocí dvou hrubých, ale poctivých signálů. Jedním je oddělitelnost: jak čistě se obrázek vůbec rozdělí do dvou tónů — kalný zdroj s nízkým kontrastem je špatnou sázkou při jakékoli velikosti. Druhým je soulad detailu a rozlišení: obrázek s mnohem více jemnými prvky, než má mřížka buněk, se prostě zhroutí do jedné šmouhy.

Konkrétní příklad z našeho vlastního testování: skutečná fotografie Eiffelovy věže vytvořila kandidáta 40×40, který prošel každou kontrolou řešitelnosti — jediné jedinečné řešení, rozumný poměr vyplnění — ale vykreslil se jako plný obdélník. Příhradová konstrukce věže a změť pod ní se zploštily do jednoho nerozlišeného bloku. Technicky platný nonogram; vizuálně zbytečný. Právě takové případy mají tyto předběžné kontroly spolu s lidským pohledem zastavit. Aby bylo jasno ohledně mezí: není zde žádný vizuální model — kanál zpracování nikdy nerozpozná, *co* je na obrázku, pouze měří, jak dobře se jeho tvar převádí. Proto konečné rozhodnutí stále náleží člověku.

6. Hodnocení a poslední lidský pohled

Hlavolamy, které projdou každou branou, dostanou hodnocení obtížnosti na základě své úrovně řešení a statistik tvaru (jak je mřížka vyplněná, zda obrázek přesahuje okraje a tak dále), což je to, co je třídí do sbírek lehkých, středních a těžkých. Poté člověk otevře ty určené pro katalog v našem editoru mřížek, zkontroluje, zda se obrázek skutečně čte jako to, čím má být, a upraví nebo zahodí vše, co automatické kontroly propustily, ačkoli neměly.

Je to záměrně neokázalý proces, a přesně o to jde: automatizace existuje, aby zaručila férovost — jedno řešení, řešitelné logikou — zatímco člověk střeží to, co počítač posoudit nedokáže, totiž zda je hotový obrázek k něčemu.

To je celý kanál zpracování, bez kódu. Pokud raději nějaký vyřešíte, než abyste četli o tom, jak vzniká, dnešní hlavolam je dobré místo, kde začít.