Cara kami membuat nonogram
Setiap teka-teki di sini berawal sebagai gambar biasa dan berakhir sebagai kisi yang dapat Anda selesaikan hanya dengan logika. Di antaranya, ia melewati alur otomatis yang meraster gambar, menguji apakah hasilnya benar-benar dapat diselesaikan, dan membuang yang tidak. Halaman ini menelusuri proses itu dengan jujur — termasuk bagian-bagian yang gagal, karena sebagian besar pekerjaan justru terletak pada menolak teka-teki buruk ketimbang membuat yang bagus.
1. Berawal dari sebuah gambar
Sebuah nonogram tak pernah lebih dari sekadar siluet hitam-putih — tanpa bayangan, tanpa warna, tanpa detail bagian dalam. Jadi langkah pertama adalah memilih gambar sumber yang bentuknya terbaca jelas pada resolusi yang sangat kecil: seekor hewan, sepotong buah, simbol zodiak, sebuah benda rumah tangga. Kami bekerja dari seni vektor (SVG), PNG transparan, dan foto biasa, yang tertata dalam paket aset bertema, ditambah gambar yang ditarik melalui pencarian gambar di dalam aplikasi.
Yang penting pada tahap ini bukanlah seberapa indah gambarnya — melainkan seberapa baik garis luarnya bertahan saat diremas menjadi kisi 15×15 atau 20×20. Bentuk yang tegas dan terpisah dengan baik berhasil. Adegan ramai dengan banyak bagian kecil yang tumpang tindih hampir tak pernah berhasil, dan kita akan lihat alasannya di bawah.
2. Mengubah gambar menjadi kisi
Gambar diraster dengan pustaka pencitraan sungguhan (yang sama yang diandalkan peramban untuk SVG), lalu direduksi menjadi satu nilai hitam-atau-putih per sel. Tidak ada satu cara «benar» tunggal untuk melakukannya, jadi alur mencoba beberapa: berpatokan pada transparansi gambar itu sendiri di mana ia memilikinya, pada kecerahan sederhana (gelap = terisi), atau — untuk subjek yang cerah dan berwarna di atas latar polos, di mana kecerahan saja nyaris tak memisahkannya — pada jarak warna dari latar. Seekor rubah oranye muda di atas putih hampir putih dalam kecerahan, tetapi jauh darinya dalam warna; topeng jarak warna mengisolasinya dengan rapi.
Batas antara «terisi» dan «kosong» dipilih secara otomatis menggunakan Otsu's method, sebuah teknik standar yang menemukan ambang kecerahan yang membelah gambar paling rapi menjadi dua kelompok. Karena tak ada cara untuk mengetahui sebelumnya ukuran, pemotongan, dan ambang mana yang paling terbaca, alur menghasilkan banyak kisi kandidat per gambar — beragam ukuran, beragam ambang — memotong tiap kisi hingga ke isi terisinya dan menyesuaikan bentuk dengan proporsi kisi, sehingga mahkota yang lebar memperoleh kisi yang lebar alih-alih dipipihkan menjadi kotak.
3. Memastikan ia benar-benar dapat diselesaikan
Sebuah gambar yang tampak baik-baik saja bagi manusia tidak otomatis menjadi teka-teki yang sah. Nonogram sejati harus dapat diselesaikan hanya dari petunjuk baris dan kolomnya dan — yang krusial — harus memiliki tepat satu jawaban. Jika dua pola terisi yang berbeda sama-sama memenuhi setiap petunjuk, teka-tekinya ambigu dan tidak adil, karena penyelesai yang mengikuti logika murni bisa saja secara benar tiba pada gambar yang «salah».
Maka setiap kandidat disodorkan ke sebuah penyelesai: ia menerapkan deduksi baris-demi-baris yang sama seperti yang akan dilakukan seseorang, dan di tempat logika saja mentok, ia beralih ke pencarian menyeluruh untuk menghitung berapa banyak jawaban lengkap yang ada. Setiap kisi dengan nol jawaban (bertentangan) atau lebih dari satu jawaban (ambigu) ditolak di tempat. Pemeriksaan ketunggalan ini adalah gerbang terpenting di seluruh alur.
4. Memastikan ia logika, bukan menebak
Memiliki satu jawaban belum sepenuhnya cukup. Sebuah teka-teki bisa secara teknis tunggal tetapi hanya dapat dicapai lewat coba-coba — mengisi sebuah sel, mengikutinya jauh ke dalam kisi, dan mundur ketika ia bertentangan. Itu bukan menyelesaikan; itu menebak, dan menghasilkan teka-teki yang membuat frustrasi.
Untuk menangkap hal ini, kami mengklasifikasikan seberapa sulit setiap teka-teki untuk dinalar. Teka-teki yang muncul dari logika baris-demi-baris yang lugas adalah «sederhana». Tingkat deduksi kedua yang telah dipelajari dengan baik (berdasarkan riset kesulitan nonogram yang diterbitkan oleh Batenburg and Kosters) menangani sebagian besar sisanya tanpa menebak sama sekali. Segala sesuatu yang masih belum bisa dipastikan tanpa coba-coba ditandai sebagai memerlukan-tebakan — dan untuk katalog sehari-hari, yang seperti itu disisihkan alih-alih diterbitkan.
5. Mengapa banyak gambar tidak pernah lolos
Sebelum pekerjaan penyelesaian apa pun, alur juga memprediksi apakah sebuah gambar bahkan layak dicoba, menggunakan dua sinyal yang kasar tetapi jujur. Yang satu adalah keterpisahan: seberapa rapi gambar terbelah menjadi dua nada sama sekali — sumber yang keruh dan berkontras rendah adalah taruhan buruk pada ukuran berapa pun. Yang lain adalah kecocokan detail-versus-resolusi: gambar dengan jauh lebih banyak fitur halus daripada jumlah sel yang dimiliki kisi hanya akan runtuh menjadi gumpalan.
Sebuah contoh nyata dari pengujian kami sendiri: sebuah foto asli Menara Eiffel menghasilkan kandidat 40×40 yang lolos setiap pemeriksaan keterselesaian — satu jawaban unik, rasio pengisian yang wajar — tetapi terender sebagai persegi panjang padat. Detail kisi-kisi menara dan kekusutan di bawahnya memipih menjadi satu blok tak terbedakan. Secara teknis sebuah nonogram yang sah; secara visual tak berguna. Kasus semacam itulah yang justru ada untuk dihentikan oleh pemeriksaan awal ini, ditambah pandangan sekilas manusia. Agar jelas tentang batasannya: tidak ada model penglihatan di sini — alur tak pernah mengenali *apa* yang ada dalam sebuah gambar, hanya mengukur seberapa baik bentuknya terkonversi. Itulah sebabnya keputusan akhir tetap ada pada seseorang.
6. Sebuah penilaian, dan pandangan manusia terakhir
Teka-teki yang melewati setiap gerbang mendapat penilaian kesulitan dari tingkat penyelesaiannya dan statistik bentuk (seberapa terisi kisinya, apakah gambar keluar dari tepi, dan seterusnya), yang lantas menyortirnya ke dalam koleksi mudah, sedang, dan sulit. Kemudian seseorang membuka yang menuju katalog di editor kisi kami, memeriksa bahwa gambar benar-benar terbaca sebagai apa yang seharusnya, dan menyesuaikan atau membuang apa pun yang diloloskan pemeriksaan otomatis padahal tidak seharusnya.
Ini proses yang sengaja tidak glamor, dan justru itulah intinya: otomatisasi ada untuk menjamin keadilan — satu jawaban, dapat diselesaikan dengan logika — sementara seorang manusia menjaga hal yang tak bisa dinilai komputer, yaitu apakah gambar yang sudah jadi itu bagus.
Itulah keseluruhan alurnya, tanpa kodenya. Jika Anda lebih suka menyelesaikan satu daripada membaca tentang bagaimana ia dibangun, teka-teki hari ini adalah tempat yang baik untuk memulai.
