Nonogram є двовимірним логічна головоломка , яка виглядає приблизно так (скріншоти з гри Pixelo , моя улюблена Nonogram гри):
Мета гри - з'ясувати, яке зображення кодують ці числа. Правила прості: число в стовпці чи рядку означає, що десь у цьому стовпчику чи рядку багато рядків заповнено підряд. Наприклад, нижній рядок на наведеному вище зображенні не повинен заповнювати поля, тоді як у верхньому ряді повинні бути заповнені всі його поля. Третій ряд знизу має 8 заповнених коробок, і всі вони будуть в ряд.
Дві або більше цифр для одного стовпця або рядка означають, що є кілька "прогонів" заповнених полів, принаймні один пробіл між ними, з цими довжинами. Порядок збережений. Наприклад, у правій колонці вищезазначеного зображення є три заповнені поля, принаймні одне пробіл під ними, а потім ще одне заповнене поле.
Ось та сама головоломка, майже завершена:
(Сиси не важливі, вони просто натяк, який гравець залишає для себе, щоб сказати "Цей квадрат точно не заповнений". Подумайте прапори в "Мінерувальнику". У них немає правил, що означають.)
Сподіваємось, ви можете побачити, що, наприклад, середні стовпці з підказками, що говорять про "2 2", мають два заповнення в полях 2-х завдовжки.
Якщо ви вирішите прийняти це, ваша місія полягає в тому, щоб написати програму або функцію, яка створить такий пазл. Вам надається розмір дошки як одне ціле число (5 <= n <= 50) на stdin або як аргумент (немає причини, щоб головоломка з нонограмою повинна бути квадратною, але для цього завдання це буде). Після цього вам буде надано ряд з 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-значних цифр
-
ніж слід?