Un nonogramme est un puzzle logique bidimensionnel qui ressemble à ceci (captures d'écran du jeu Pixelo , mon jeu de nonogramme préféré):

Le but du jeu est de comprendre quelle image ces nombres encodent. Les règles sont simples: un nombre sur une colonne ou une ligne signifie que quelque part dans cette colonne ou cette ligne, de nombreuses cases sont remplies dans une ligne. Par exemple, la ligne du bas de l'image ci-dessus ne doit contenir aucune case, tandis que celle du dessus doit contenir toutes ses cases. La troisième rangée à partir du bas a 8 cases remplies, et elles seront toutes consécutives.
Deux nombres ou plus pour la même colonne ou ligne signifient qu'il y a plusieurs "séries" de cases remplies, avec au moins un espace entre elles, avec ces longueurs. L'ordre est conservé. Par exemple, il y a trois cases remplies dans la colonne de droite de l'image ci-dessus, au moins un espace en dessous, puis une autre case remplie.
Voici ce même puzzle, presque terminé:

(Les X ne sont pas importants, ils sont juste un indice que le joueur se laisse à lui-même pour dire "Cette case n'est certainement pas remplie". Pensez aux drapeaux dans Démineur. Ils n'ont pas de sens pour les règles.)
J'espère que vous pouvez voir que, par exemple, les colonnes du milieu avec des indices qui disent "2 2" ont deux séries de 2 cases remplies.
Votre mission, si vous l'acceptez, est d'écrire un programme ou une fonction qui créera un puzzle comme celui-ci. La taille de la carte vous est donnée sous la forme d'un entier unique (5 <= n <= 50) sur stdin ou comme argument (il n'y a aucune raison pour qu'un casse-tête non graphique doive être carré, mais pour ce défi, il le sera). Après cela, vous recevrez une série de 1 et de 0 représentant respectivement les carrés remplis et non remplis dans l'image. Les premiers n d'entre eux sont la ligne du haut, puis la ligne suivante, etc. Vous retournerez ou imprimerez pour afficher un tableau de 2 * 1 cellules (car elles sont plus belles et cela vous donne de la place pour des indices à 2 chiffres pour une colonne). ), tous vides, avec des indices correspondant aux données d'entrée.
Format de sortie

Échantillon
Contribution:
./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])
Image:

Sortie:
1
2 1 2
3 2 1 2 3
+----------
3|
2 2|
1 1 1|
2 2|
3|
Contribution:
./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'
Image:

Sortie:
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|
Clarifications
- Votre sortie n'a pas besoin d'être un puzzle résoluble. Tous les nonogrammes ne sont pas résolubles, mais ce n'est pas votre problème. Sortez simplement les indices qui correspondent à l'entrée, qu'ils constituent ou non un bon casse-tête.
- Un programme qui prend des arguments sur la ligne de commande est autorisé. C'est un peu indiqué ci-dessus, mais il est possible de se tromper. C'est à cela que servent les clarifications.
- L'impression d'un
0pour une ligne ou une colonne qui n'a pas de cases remplies est obligatoire. Je ne dis cela avec des mots nulle part, mais c'est dans les exemples de données.
5<=n<=50est la spécification, donc il ne peut pas y avoir de nombres à 3 chiffres
-qu'il ne devrait?