Sebuah Nonogram adalah dimensi dua teka-teki logika yang terlihat seperti ini (screenshot dari game Pixelo , permainan Nonogram favorit saya):

Tujuan permainan ini adalah untuk mengetahui gambar apa yang dikodekan oleh angka-angka tersebut. Aturannya sederhana: Angka pada kolom atau baris berarti bahwa di suatu tempat di kolom atau baris itu, bahwa banyak kotak diisi dalam satu baris. Misalnya, baris bawah pada gambar di atas harus tidak memiliki kotak diisi, sedangkan yang di atasnya harus memiliki semua kotaknya diisi. Baris ketiga dari bawah memiliki 8 kotak yang terisi, dan semuanya akan berturut-turut.
Dua atau lebih angka untuk kolom atau baris yang sama berarti ada beberapa "run" dari kotak yang diisi, dengan setidaknya satu spasi di antaranya, dengan panjangnya. Pesanan dipertahankan. Misalnya, ada tiga kotak yang diisi di kolom paling kanan dari gambar di atas, setidaknya satu ruang di bawahnya, dan kemudian satu lagi yang diisi kotak.
Inilah teka-teki yang sama, hampir selesai:

(The Xs tidak penting, mereka hanya petunjuk pemain meninggalkannya untuk mengatakan "Alun-alun ini jelas tidak diisi". Pikirkan bendera di Minesweeper. Mereka tidak memiliki arti aturan.)
Mudah-mudahan Anda dapat melihat bahwa, misalnya, kolom tengah dengan petunjuk yang mengatakan "2 2" memiliki dua run 2-panjang dari kotak yang diisi.
Misi Anda, jika Anda memilih untuk menerimanya, adalah menulis program atau fungsi yang akan membuat teka-teki seperti ini. Anda diberi ukuran papan sebagai bilangan bulat tunggal (5 <= n <= 50) pada stdin atau sebagai argumen (tidak ada alasan mengapa teka-teki nonogram harus persegi, tetapi untuk tantangan ini akan menjadi). Setelah itu, Anda akan diberi serangkaian 1s dan 0s yang mewakili kotak diisi dan tidak terisi dalam gambar, masing-masing. N pertama dari mereka adalah baris atas, kemudian baris berikutnya, dll. Anda akan kembali atau mencetak ke stdout papan 2 * 1 sel (karena mereka terlihat lebih baik, dan itu memberi Anda ruang untuk petunjuk 2 digit untuk kolom ), semuanya kosong, dengan petunjuk yang sesuai dengan data input.
Format output

Mencicipi
Memasukkan:
./nonogram <<< '5 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0'
OR
n(5,[0,1,1,1,0,1,1,0,1,1,1,0,1,0,1,1,1,0,1,1,0,1,1,1,0])
Gambar:

Keluaran:
1
2 1 2
3 2 1 2 3
+----------
3|
2 2|
1 1 1|
2 2|
3|
Memasukkan:
./nonogram <<< '15 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1'
Gambar:

Keluaran:
1 1
1 1 3 3 5 5 3 3 1
7 2 3 2 4 2 3 210 2 3 0 4 215
+------------------------------
2|
1|
1|
1|
1|
1 1|
3 3 1 1|
1 5 1 1|
3 5 3|
1 5 1|
1 3 1|
1 1 1 1 1|
1 1 1 1 1 1 1 1|
11 3|
11 3|
Klarifikasi
- Output Anda tidak perlu menjadi teka-teki yang dapat dipecahkan. Tidak semua nonogram dapat dipecahkan, tetapi itu bukan urusan Anda. Keluarkan petunjuk yang sesuai dengan input, apakah itu membuat puzzle yang baik atau tidak.
- Program yang mengambil argumen pada baris perintah diizinkan. Ini adalah jenis yang disebutkan di atas, tetapi mungkin untuk mendapatkan ide yang salah. Untuk itulah klarifikasi.
- Mencetak
0untuk baris atau kolom yang tidak memiliki kotak diisi adalah wajib. Saya tidak mengatakan ini dengan kata-kata di mana pun tetapi dalam data sampel.
5<=n<=50adalah specnya, jadi tidak mungkin ada angka 3 digit
-dari yang seharusnya?