Nonogram to dwuwymiarowy łamigłówka logiczna, która wygląda mniej więcej tak (zrzuty ekranu z gry Pixelo , moja ulubiona gra Nonogram):

Celem gry jest ustalenie, jaki obraz kodują te liczby. Reguły są proste: Liczba w kolumnie lub wierszu oznacza, że gdzieś w tej kolumnie lub wierszu wiele pól jest wypełnionych w jednym rzędzie. Na przykład w dolnym rzędzie na powyższym obrazku nie może być wypełnionych żadnych pól, podczas gdy w powyższym rzędzie muszą być wypełnione wszystkie jego pola. Trzeci rząd od dołu ma 8 wypełnionych pól i wszystkie będą w jednym rzędzie.
Dwie lub więcej liczb dla tej samej kolumny lub wiersza oznacza, że istnieje wiele „serii” wypełnionych pól, z co najmniej jedną spacją między nimi, o tych długościach. Kolejność zostaje zachowana. Na przykład są trzy wypełnione pola w prawej kolumnie powyższego obrazu, co najmniej jedno miejsce pod nimi, a następnie jeszcze jedno wypełnione pole.
Oto ta sama zagadka, prawie ukończona:

(X nie są ważne, to tylko wskazówka, którą gracz pozostawia, aby powiedzieć „Ten kwadrat zdecydowanie nie jest wypełniony”. Pomyśl flagi w Saper. Nie mają one żadnych zasad.)
Mam nadzieję, że widać na przykład, że środkowe kolumny z podpowiedziami „2 2” mają dwa ciągi o długości 2 wypełnionych pól.
Twoim zadaniem, jeśli zdecydujesz się to zaakceptować, jest napisanie programu lub funkcji, która stworzy taką układankę. Rozmiar tablicy jest podawany jako pojedyncza liczba całkowita (5 <= n <= 50) na stdin lub jako argument (nie ma powodu, dla którego łamigłówka nonogramowa musi być kwadratowa, ale dla tego wyzwania będzie). Następnie otrzymasz serię 1 i 0 reprezentujących odpowiednio wypełnione i niewypełnione kwadraty na obrazie. Pierwszy n z nich to górny rząd, a następnie następny rząd itp. Zwrócisz lub wydrukujesz, aby ustawić tablicę 2 * 1 komórek (ponieważ wyglądają lepiej i daje ci miejsce na 2-cyfrowe wskazówki dla kolumny ), wszystkie są puste, z podpowiedziami odpowiadającymi danym wejściowym.
Format wyjściowy

Próba
Wkład:
./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])
Obraz:

Wydajność:
1
2 1 2
3 2 1 2 3
+----------
3|
2 2|
1 1 1|
2 2|
3|
Wkład:
./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'
Obraz:

Wydajność:
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|
Wyjaśnienia
- Twój wynik nie musi być układanką do rozwiązania. Nie wszystkie nonogramy są rozwiązywalne, ale to nie jest twój problem. Po prostu wypisz podpowiedzi, które odpowiadają danym wejściowym, niezależnie od tego, czy stanowią dobrą łamigłówkę, czy nie.
- Program, który pobiera argumenty z wiersza poleceń, jest dozwolony. Jest to w pewnym sensie wspomniane powyżej, ale możliwe jest, aby uzyskać zły pomysł. Po to są wyjaśnienia.
- Drukowanie
0wiersza lub kolumny bez wypełnionych pól jest obowiązkowe. Nigdzie nie mówię tego słowami, ale jest to w przykładowych danych.
5<=n<=50jest specyfikacją, więc nie może być żadnych 3-cyfrowych liczb
-niż powinien?