Một nonogram là một câu đố logic hai chiều trông giống như thế này (ảnh chụp màn hình từ trò chơi Pixelo , trò chơi phi hình yêu thích của tôi):

Mục tiêu của trò chơi là tìm ra những hình ảnh mà những con số đó được mã hóa. Các quy tắc rất đơn giản: Một số trên một cột hoặc hàng có nghĩa là ở đâu đó trong cột hoặc hàng đó, có nhiều hộp được điền vào một hàng. Ví dụ, hàng dưới cùng trong hình trên phải không có ô nào được điền vào, trong khi hàng bên trên phải có tất cả các ô của nó được điền. Hàng thứ ba từ dưới lên có 8 ô đầy, và tất cả chúng sẽ nằm trong một hàng.
Hai hoặc nhiều số cho cùng một cột hoặc hàng có nghĩa là có nhiều "lần chạy" của các hộp được lấp đầy, với ít nhất một khoảng trống ở giữa, với các độ dài đó. Trật tự được bảo tồn. Ví dụ, có ba ô được điền vào cột bên phải của hình trên, ít nhất một khoảng trắng bên dưới chúng, và sau đó thêm một ô nữa.
Đây là câu đố tương tự, gần như đã hoàn thành:

(Các chữ X không quan trọng, chúng chỉ là một gợi ý mà người chơi để họ tự nói "Quảng trường này chắc chắn không được điền vào". Hãy nghĩ những lá cờ trong Minesweeper. Chúng không có ý nghĩa quy tắc nào.)
Hy vọng rằng bạn có thể thấy rằng, ví dụ, các cột ở giữa với các gợi ý có nội dung "2 2" có hai lần chạy dài 2 ô.
Nhiệm vụ của bạn, nếu bạn chọn chấp nhận nó, là viết một chương trình hoặc chức năng sẽ tạo ra một câu đố như thế này. Bạn được cung cấp kích thước của bảng dưới dạng một số nguyên duy nhất (5 <= n <= 50) trên stdin hoặc làm đối số (không có lý do tại sao câu đố không phải là hình vuông, nhưng đối với thử thách này sẽ là). Sau đó, bạn sẽ được cung cấp một loạt các số 1 và 0 tương ứng với các ô vuông được lấp đầy và không được lấp đầy trong hình ảnh. N đầu tiên trong số chúng là hàng trên cùng, sau đó là hàng tiếp theo, v.v. Bạn sẽ quay lại hoặc in để xuất bản bảng 2 * 1 ô (vì chúng trông đẹp hơn và nó cung cấp cho bạn chỗ cho các gợi ý 2 chữ số cho một cột ), tất cả đều trống, với các gợi ý tương ứng với dữ liệu đầu vào.
Định dạng đầu ra

Mẫu vật
Đầu vào:
./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])
Hình:

Đầu ra:
1
2 1 2
3 2 1 2 3
+----------
3|
2 2|
1 1 1|
2 2|
3|
Đầu vào:
./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'
Hình:

Đầu ra:
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|
Làm rõ
- Đầu ra của bạn không cần phải là một câu đố có thể giải được. Không phải tất cả các biểu đồ đều có thể giải được, nhưng đó không phải là mối quan tâm của bạn. Chỉ cần đưa ra các gợi ý tương ứng với đầu vào, cho dù chúng có tạo ra một câu đố hay hay không.
- Một chương trình lấy các đối số trên dòng lệnh được cho phép. Đây là loại đã nêu ở trên, nhưng có thể hiểu sai. Đó là những gì làm rõ là cho.
- In một
0hàng hoặc cột không có hộp điền là bắt buộc. Tôi không nói điều này với các từ ở bất cứ đâu nhưng nó có trong dữ liệu mẫu.
5<=n<=50là thông số kỹ thuật, vì vậy không thể có bất kỳ số có 3 chữ số nào
-hơn mức cần thiết không?