Представимо стандартну цегляну цеглу як [__]
(і ігноруємо той факт, що верх відкритий). Коли ці цегли укладаються, кожен інший шар зміщується на половину цегли, як це зазвичай в цегляній конструкції:
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
Таким чином, кожна цегла має максимум шість сусідів, і неможливо два цегли прямо вирівняти вертикально.
Ключовим моментом є те, що композиції з цих цегли не закладаються , а просто тримаються разом із силою тяжіння. Тому важливо, щоб кожна цегла в конструкції була стійкою, інакше вся конструкція нестабільна.
Існує три способи, коли окрема цегла може бути стійкою:
- Будь-яка цегла на землі (найнижча лінія цегли) є стійкою.
Будь-яка цегла, яка має дві цегли прямо під нею, є стійкою:
[__] <- this brick is stable [__][__] <- because these bricks hold it up
Будь-яка цегла, яка має цеглу як над, так і під нею з одного боку, є стійкою:
[__] [__] [__] [__] <- these middle bricks are stable [__] [__] because the upper and lower bricks clamp them in [__] [__] [__] [__] <- these middle bricks are NOT stable [__] [__]
З цих правил ми бачимо, наприклад, розташування
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
нестабільна, оскільки цегла правого верхнього цегли нестабільна, і це все, що потрібно.
Цегляна конструкція стабільна лише тоді, коли всі її цегли стійкі.
Виклик
Ваше завдання полягає в тому, щоб написати функцію, яка бере рядок цегляної структури і повертає триєдине значення, якщо структура є стабільною, і хибне значення, якщо нестабільне. (визначення правди / фальш )
Вхідний рядок може бути довільно великим, але це завжди буде прямокутна сітка символів, з пробілами, заповненими просторами, цегли. Ширина сітки символів ділиться на 4, але висота може бути непарною або парною.
Цегляна сітка завжди простягається вгорі та праворуч від нижнього лівого положення цегли:
.
.
.
BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?BRK? . . .
BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?BRK?
Залежно від структури кожен BRK?
або являє собою цеглу ( [__]
) або порожній простір (4 місця).
Зауважте, що порожнини напівцеглини заповнені пробілами, щоб сітка символів була прямокутною.
Оцінка балів
Виграє найкоротший код у байтах .
Примітки
- За бажанням ви можете скористатися
.
замість місця пробіл як символ порожнього простору. - Порожній рядок вважається стабільним.
- Якщо у вашій мові немає функцій, ви можете використовувати названу рядову змінну в якості введення та призначити результат іншій змінній.
- Якщо у вашій мові немає рядків, ви можете робити все, що здається підходящим для введення.
Випробування
Різні тестові випадки, розділені порожніми рядками. Для наочності .
використовується замість місця для порожніх пробілів.
Стабільний:
[__]
..[__]..
[__][__]
........[__]........
......[__][__]......
........[__]........
..[__][__]..
[__][__][__]
..[__][__]..
[__]....[__]
............[__]..
..[__][__][__][__]
[__][__][__][__]..
..[__][__][__][__]
[__][__][__][__]..
..[__]........[__]..
[__][__][__][__][__]
..[__][__][__][__]..
....[__][__][__]....
......[__][__]......
........[__]........
Нестабільний:
..[__]..
........
..[__]..
[__]....
..[__]..
....[__]
..[__][__]..
[__]....[__]
..[__][__]..
[__]....[__]
..[__][__][__][__]
[__][__][__][__]..
..[__][__][__][__]
[__][__][__][__]..
[__][__][__][__][__]
..[__][__][__][__]..
....[__][__][__]....
......[__][__]......
........[__]........
........[__]....
......[__][__]..
....[__][__]....
..[__][__]......
[__][__]........
..[__]..........
(вам доведеться подумки складати ці лінії один на одного. Справа в тому, що ваші правила дозволяють структурам, центр ваги яких далеко віднесений від точки їх контакту із землею. Щоб уникнути цього, слід затягнути їх. , не потребуючи фізичного двигуна, якщо вам це здалося.)