Каждый программист знает, что скобки []{}()<>
- это действительно весело. Чтобы усугубить это удовольствие, группы переплетенных скобок могут быть преобразованы в симпатичные и нечеткие диаграммы.
Допустим, у вас есть строка, которая содержит сбалансированные скобки, например [{][<(]})>(())
. Шаг первый - повернуть струну на 45 градусов по часовой стрелке. (В Mathematica это можно сделать почти с помощью Rotate[ur_string,-pi/4]
). Вот результат первого шага:
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Затем добавьте диагональный пробел между каждым символом.
[
{
]
[
<
(
]
}
)
>
(
(
)
)
Затем начните с самой левой скобки и нарисуйте квадрат между ним и его партнером по преступлению.
+---+
| |
| { |
| |
+---+
[
<
(
]
}
)
>
(
(
)
)
Повторите этот процесс с каждой парой скобок, перезаписывая предыдущие символы с +
s, если это необходимо.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| [ |
| |
| < |
| |
| ( |
| |
| ] |
| |
+-----------+
)
>
(
(
)
)
Продолжайте, пока не сделаете все красиво и четко.
+---+
| |
| +-+---------+
| | | |
+-+-+ |
| |
| +-----+ |
| | | |
| | +---+-+---+
| | | | | |
| | | +-+-+-+ |
| | | | | | | |
| +-+-+-+ | | |
| | | | | |
+-----+-+---+ | |
| | | |
| +-----+ |
| |
+---------+
+-----+
| |
| +-+ |
| | | |
| +-+ |
| |
+-----+
вход
Вводом будет одна строка сбалансированных скобок и никаких других символов, причем каждая скобка является одной из []{}()<>
. Каждый тип скобок сбалансирован индивидуально, хотя разные типы могут перекрываться (это то, что делает квадраты интересными). Завершающий перевод строки не является обязательным.
Выход
Выходными данными будет квадратный шаблон блокировки, созданный из строки скобок. Завершающие пробелы и завершающие символы новой строки являются необязательными, но не должно быть начальных пробелов.
Цель
Это код-гольф, побеждает меньше байтов.
источник
[[]]
можем ли мы вывести два квадрата с наложением или мы должны вывести один квадрат внутри другого?Ответы:
JavaScript (ES6),
269 274 278 296261 байтРедактировать Сохранено 4 байта thx @Neil
ТЕСТ
источник
[...r].map
?[...r].map(c=>c||' ')
.r.map
потому что r - это редкий массив, и карта пропускает отсутствующие элементы. Так что теперь я использую g, который заполнен (и в выводе столько строк, сколько столбцов)r.map
, я сказал[...r].map
, и[...r]
это НЕ разреженный массив, как вы упомянули в комментарии 5 codegolf.stackexchange.com/a/61505 .Питон 3, 226
Пример . Объяснение:
источник
pb - 449 байт
Я был очень взволнован, когда прочитал это, потому что у меня есть язык, который печатает прямо на позицию! Эта задача о позиционировании выходов должна быть простой и короткой!
Тогда я вспомнил, что в любом случае ПБ давно выиграл.
С комментариями:
источник
CJam, 117 байт
Попробуй это здесь.
источник
Руби, 268
разряженный в тестовой программе
источник