一个nonogram是一个二维的逻辑拼图,看起来是这样的(从游戏截图Pixelo,我最喜欢的游戏nonogram):

游戏的目的是弄清楚这些数字在编码什么图像。规则很简单:列或行上的数字表示该列或行中的某个位置,一行中填充了许多框。例如,上图的最下面一行必须没有盒子被填满,而其上面的那一行必须所有盒子都被填满。底部的第三行有8个填充的框,它们都将连续放置。
同一列或同一行的两个或多个数字表示存在多个“行”填充框,这些填充框之间至少有一个空格,且具有这些长度。订单被保留。例如,上图的最右边一列有三个填充框,在它们下方至少有一个空格,然后还有一个填充框。
这是同样的难题,几乎完成了:

(X并不重要,它们只是提示玩家让他们自己说“这个正方形肯定没有填满”。请考虑Minesweeper中的标志。它们没有规则的含义。)
希望您能看到,例如,带有提示“ 2 2”的中间列有两个2长度的填充框。
您的任务(如果您选择接受)是编写一个程序或函数,它将引起类似的困惑。您可以在stdin上将板子的大小指定为单个整数(5 <= n <= 50)或作为参数(无图谜题必须是正方形的,没有理由,但是对于这个挑战而言,它将是正方形)。之后,您将获得一系列1和0,分别代表图像中的实心和未实心正方形。它们的前n个是第一行,然后是下一行,依此类推。您将返回或打印以2 * 1单元的标准显示板(因为它们看起来更好,并且为列提供了两位数字的提示空间) ),它们全部为空,提示与输入数据相对应。
输出格式

样品
输入:
./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])
图片:

输出:
1
2 1 2
3 2 1 2 3
+----------
3|
2 2|
1 1 1|
2 2|
3|
输入:
./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'
图片:

输出:
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|
澄清说明
- 您的输出不一定是可以解决的难题。并非所有非图都可以解决,但这不是您关心的问题。只需输出与输入相对应的提示,无论它们是否构成一个很好的难题。
- 允许使用在命令行中接受参数的程序。上面已经说过了,但是有可能得到错误的想法。这就是澄清的目的。
0必须为没有填充框的行或列打印。我没有在任何地方用单词说这个,而是在示例数据中。
5<=n<=50是的规范,所以不能有任何3位数字
-内容不应该多吗?