Um nonograma é um quebra-cabeça lógico bidimensional que se parece com isso (capturas de tela do jogo Pixelo , meu jogo favorito do nonograma):

O objetivo do jogo é descobrir qual imagem esses números estão codificando. As regras são simples: um número em uma coluna ou linha significa que em algum lugar dessa coluna ou linha, muitas caixas são preenchidas em uma linha. Por exemplo, a linha inferior na imagem acima não deve ter caixas preenchidas, enquanto a linha acima deve ter todas as caixas preenchidas. A terceira linha da parte inferior tem 8 caixas preenchidas e todas elas serão seguidas.
Dois ou mais números para a mesma coluna ou linha significam que existem várias "execuções" de caixas preenchidas, com pelo menos um espaço entre esses comprimentos. O pedido é preservado. Por exemplo, há três caixas preenchidas na coluna direita da imagem acima, pelo menos um espaço abaixo delas e mais uma caixa preenchida.
Aqui está o mesmo quebra-cabeça, quase completo:

(Os Xs não são importantes, são apenas uma dica que o jogador deixa para dizerem "Este quadrado definitivamente não está preenchido". Pense em bandeiras no Campo Minado. Eles não têm significado para as regras.)
Felizmente, você pode ver que, por exemplo, as colunas do meio com dicas que dizem "2 2" têm duas execuções de 2 comprimentos de caixas preenchidas.
Sua missão, caso você aceite, é escrever um programa ou função que criará um quebra-cabeça como esse. Você recebe o tamanho do quadro como um único número inteiro (5 <= n <= 50) no stdin ou como argumento (não há razão para que um quebra-cabeça que não seja do programa deve ser quadrado, mas, para esse desafio, será). Depois disso, você receberá uma série de 1s e 0s representando quadrados preenchidos e não preenchidos na imagem, respectivamente. O primeiro n deles é a linha superior, depois a próxima linha, etc. Você retornará ou imprimirá um stdout de uma placa de 2 * 1 células (porque elas ficam melhores e oferecem espaço para dicas de dois dígitos para uma coluna ), todos vazios, com dicas correspondentes aos dados de entrada.
Formato de saída

Amostra
Entrada:
./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])
Imagem:

Saída:
1
2 1 2
3 2 1 2 3
+----------
3|
2 2|
1 1 1|
2 2|
3|
Entrada:
./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'
Imagem:

Saída:
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|
Esclarecimentos
- Sua saída não precisa ser um quebra-cabeça solucionável. Nem todos os nonogramas são solucionáveis, mas essa não é sua preocupação. Basta emitir as dicas que correspondem à entrada, sejam elas um bom quebra-cabeça ou não.
- É permitido um programa que aceita argumentos na linha de comando. É o tipo de afirmação acima, mas é possível ter uma idéia errada. É para isso que servem os esclarecimentos.
0É obrigatório imprimir um para uma linha ou coluna que não tenha caixas preenchidas. Não digo isso com palavras em nenhum lugar, mas nos dados da amostra.
5<=n<=50é a especificação, por isso, não pode haver qualquer número de 3 dígitos
-do que deveria?