Ця задача заснована на грі Layerz.
Враховуючи, на stdin або як аргумент функції, 2D прямокутний масив комірок, де кожна комірка містить чи порожню (ви можете використовувати 0s замість пробілів без штрафних санкцій), 1, 2, 3 або 4 ; знайти спосіб поділити його на допустимі регіони (як визначено нижче) таким чином, щоб кожна непуста клітинка містила точно одну область. Потім виведіть знайдене рішення у будь-якому розумному форматі. Якщо рішення немає, або зупиніть, не виробляючи вихід, або виведіть єдине значення фальси, тоді зупиніть.
Будь-який із наведених нижче дійсних регіонів:
- Єдина клітина, що містить 1
- Клітина, що містить 2 та точно один із своїх непорожніх ортогональних сусідів
- Клітина, що містить 3 та рівно два її непорожніх ортогональних сусіда
- Клітина, що містить 4 та рівно три її непорожніх ортогональних сусіда
Це код-гольф , тому найкоротша відповідна відповідь у байтах виграє.
Деякі тестові випадки:
1. Досить тривіальний:
І це рішення, кожен регіон має інший колір:
2. Більш цікавий
У цьому є кілька рішень, але ось одне з них:
3. Менший, який містить пробіли, не має жодних рішень (залежно від того, чи використовуєте ви одне з двох для "захоплення" трьох, або три, щоб взяти два з двох, вам або залишилося пара несумісних [і, отже, нерозбірливих] двох або одиничних двох самостійно):
Оскільки в цій сітці немає рішень, ваша програма повинна зупинятися, не даючи жодного результату при даній сітці.
4. Цей (у верхній частині 2 змістив одну клітинку вліво) має рішення, хоча:
Рішення:
(Правий нижній 2 використовується для "захоплення" 3)
5. Тому що нам знадобився тестовий випадок з кількома четвереньками:
Одне рішення:
4
s, якщо вони є дійсними вхідними даними.