Змагання
Ваша програма або функція прийме введення одного рядка від STDIN або параметра функції. Можна припустити, що вхід буде містити лише алфавітні символи (a-zA-Z), пробіли та повні зупинки. Введення даних є нечутливим до регістру, тому ви маєте ставитися до "a" точно так само, як і до "A".
Для кожного символу в рядку виведете подання будівлі відповідно до наступних специфікацій.
Кожна будівля повинна мати дах, позначений підкресленням у верхній лінії, а потім косою рисою, пробілом та зворотною косою рисою на другій лінії.
_
/ \
Потім у вас буде кілька поверхів, що відповідають номеру літери (a = 1, b = 2, c = 3 тощо), які зображені стіною (|) з кожного боку та пробілом посередині. Нижній поверх (і лише нижній поверх) повинен мати фундамент, який є підкресленням між стінами. Подобається це...
|_|
Так, наприклад, "b" виглядатиме так
_
/ \
| |
|_|
Тепер ми знаємо, що дуже високі, вузькі будівлі не можуть стояти і повинні бути ширшими біля основи, тому жодна будівля не може стояти більше трьох поверхів без додаткової підтримки. Тож кожні три рівні (не менше) слід додавати "розширюється шар". Шар, що розширюється, складається з косої та зворотної нахилів безпосередньо над стінками секції під ним, а ділянка внизу повинна бути на два проміжки ширше, ніж переріз вище. Додатковий шар не враховується до висоти будівлі.
Будинки не повинні перетинатися, але не повинні мати зайвих проміжків між ними, а земля завжди рівна, тому всі будівлі повинні мати свою базу на одному рівні.
Наприклад, "abcdefga" буде виглядати приблизно так.
_
/ \
_ | |
_ / \ | |
_ / \ | | | |
/ \ | | | | / \
_ | | | | | | | |
_ / \ | | | | / \ | |
_ / \| | | | / \| | | | _
/ \| || |/ \| || |/ \/ \
|_||_||_||___||___||___||_____||_|
Проміжки у рядковому вході повинні бути представлені подвійним пробілом.
Повні зупинки на вводі рядка повинні бути представлені таким чином щебеню.
/\/\
Подальші приклади
Вхід = Hello world.
Вихід =
_
/ \
| |
| |
| |
/ \
| |
| | _
| | / \
/ \ | |
| | | |
_ | | _ | |
/ \ | | / \ / \
| | / \ | | | |
| | | | | | | |
_ _ | | | | | | | | _
/ \ / \ / \ | | / \ / \ / \
| | | | | | / \ | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
_ / \ / \ / \ | | / \ / \ / \
/ \ | | | | | | / \ | | | | | |
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
| | _ / \ / \ / \ | | / \ / \ / \
/ \ / \ | | | | | | / \ | | | | | | _
| | | | | | | | | | | | | | | | | | / \
| | | | | | | | | | | | | | | | | | | |
| | | | / \/ \/ \ | | / \/ \/ \ | |
/ \/ \| || || | / \| || || | | |
| || || || || | | || || || |/ \
|_____||___||_______||_______||_________| |_______________||_________||___________||_______||___|/\/\
Вхід = lorem ipsum
_
/ \
_ | |
/ \ | |
_ | | | |
/ \ | | / \
| | _ | | | |
| | / \ / \ | |
_ | | | | | | | |
/ \ / \ | | | | / \
| | | | _ | | | | | | _
| | | | / \ / \ / \ | | / \
_ | | | | | | | | | | | | | |
/ \ / \ / \ | | | | | | / \ | |
| | | | | | | | | | | | | | | |
| | | | | | / \ / \ / \ | | / \
| | | | | | | | _ | | | | | | | |
/ \ / \ / \ | | / \ | | | | / \ | |
| | | | | | | | | | | | | | | | | |
| | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | |
/ \ / \ / \ _ | | / \ | | | | / \ | |
| | | | | | / \ | | | | | | | | | | | |
| | | | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | | | |
/ \/ \/ \ | | | | / \ | | | | / \ | |
| || || |/ \ | | | | | | | | | | | |
| || || || |/ \ | |/ \/ \| |/ \
|_______||_________||___________||___||_________| |_____||___________||_____________||_____________||_________|
Вхід = a.a.a.x.x.x.a.a.a
_ _ _
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
_ _ _ | | | | | | _ _ _
/ \ / \ / \ | | | | | | / \ / \ / \
|_|/\/\|_|/\/\|_|/\/\|_______________|/\/\|_______________|/\/\|_______________|/\/\|_|/\/\|_|/\/\|_|
Правила
- Звичайно, це кодовий гольф, найнижчий бал у виграші байтів
- Застосовуються стандартні правила лазівки
- Дозволяється будь-яка кількість додаткових порожніх рядків до або після виводу
- Ви можете вивести весь результат в одному рядку або запропонувати вихід у вигляді масиву, де кожен елемент являє собою один рядок виводу, або надіслати STDOUT
Примітка
Це моє перше повідомлення до PPCG, тому будь ласка, будь ласка, на мене. Це пройшло через пісочницю. Будь-які негативні моменти або можливі покращення, будь ласка, опублікуйте як коментар, і я зроблю все, що можу
[a,z]
, [1.26]
частин , на Mego згадується. Необов'язково мати його необов'язково (якщо тільки це не є ключовою частиною виклику (його тут немає).
[a,z]
і[A,Z]
в[1,26]
здається безглуздим вимога. Було б набагато краще просто використовувати цілі списки як вхідні дані (маючи0
вхід для щебеню). Крім того, опублікування виклику після того, як він пробув у «Пісочниці» лише 21 годину , не чекаючи отримання голосів чи відгуків більше ніж одного користувача, не вважається тим, що він «пройшов через пісочницю». Рекомендується залишати проблеми в «Пісочниці» мінімум на 48–72 години, щоб дати людям достатньо часу для їх перегляду.