Учитывая два входа - один из них непустая печатная строки ASCII (включая пробел, за исключением символа новой строки), другие один из двух различных, последовательных значений вашего выбора ( 1 / 0
, l / r
, left / right
и т.д.) - выводить ASCII искусства самолета баннер строки, указывающий влево или вправо. Для согласованности я буду использовать left
иright
в этом описании проблемы.
Плоскость либо |-DI>-/
( left
), либо \-<ID-|
( right
). Поскольку баннер прозрачный, он состоит из символов входной строки, разделенных пробелами слева направо ( left
) или справа налево ( right
) и окруженных прямоугольником формы
/--/
---< <
\--\
или же
\--\
> >---
/--/
Обратите внимание должно быть один пробелом между началом / концом сообщения и >
, <
символами.
Например, вот сообщение HAPPY BIRTHDAY!
и направление left
:
/-------------------------------/
|-DI>-/---< H A P P Y B I R T H D A Y ! <
\-------------------------------\
Вот сообщение PPCG
и направление right
. Обратите внимание, что буквы отображаются «назад» при просмотре с этой стороны баннера:
\---------\
> G C P P >---\-<ID-|
/---------/
правила
- Начальные или завершающие символы новой строки или пробелы являются необязательными, при условии, что сами символы выстроены правильно.
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Если возможно, укажите ссылку на среду онлайн-тестирования, чтобы другие люди могли опробовать ваш код!
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
eval
- Введите программу, которая генерирует левую плоскость для левой, и программу, которая генерирует правую плоскость для правой.Ответы:
JavaScript (ES6),
141138 байтСтрока и направление вводятся через синтаксис карри.
'/\n|-DI>-/---< '
для левого,'/\n|-DI<-\\---> '
для правого.Показать фрагмент кода
источник
eval
... просто предоставьте левый и правый источники функций в качестве двух значений по вашему выбору. (Я думал, что есть мета на этом, но я не могу найти это.)eval
"Уловка" была бы этой лазейкой в духе, даже если явно не заявлено. Этот ответ здесь довольно умный, хотя.eval
как серьезный ответ . Обходной путь для будущих проблем, подобных этому, может заключаться в том, чтобы включить входные данные как часть количества байтов.Perl 5 , 149 +1 (-p) = 150 байт
Попробуйте онлайн!
Двухстрочный ввод. Во-первых, это сообщение. Второй 0 для левого, 1 для правого.
источник
V ,
73, 65 байтовПопробуйте онлайн!
Не лучший результат, но это потому, что почти половина этого происходит из-за изменения результатов.
HexDump:
Принимает строку в качестве входных данных для буфера, а направление как
0
для левого, так и1
для правого - в качестве аргументов командной строки.источник
05AB1E , 63 байта
Попробуйте онлайн!
На основании ошибок, которые могут быть исправлены в будущем.
источник
0
вторую строку на a1
.Древесный уголь ,
44403935 байтПопробуйте онлайн! Ссылка на подробную версию кода. Первый ввод - 1 для правого и 0 для левого, второй - строка баннера. Редактировать:
1 байт сохранен с использованием,ReflectButterfly(:Up)
поскольку внастоящее время имеется ошибка позиционирования курсора, но я сохранил еще 4 байта, изменив направление печати, и теперь не имеет значения, какой я использую.ReflectButterfly(:Down)
383432 байтная версия, если разрешено зеркальное отображение баннера:Попробуйте онлайн! Ссылка на подробную версию кода. Первый вход - 0 для правого и 1 для левого. Объяснение:
Распечатать самолет.
Напечатайте верхнюю половину коробки (обратите внимание на конечный пробел).
Если второй вход ненулевой, поменяйте направление печати, в противном случае отразите плоскость и прямоугольник.
Распечатайте сообщение с дополнительным интервалом (обратите внимание на конечный пробел). Курсор находится в дальнем конце поля от плоскости, поэтому сообщение необходимо перевернуть.
Подумайте, чтобы получить нижнюю половину коробки.
источник
Желе ,
6865 байтПопробуйте онлайн!
Принимает 1 справа, 0 слева.
-3 байта благодаря @JonathanAllan ( grr, я всегда забываю,
AB+
делает то же самое, что иB+@A
)источник
³K“|-DI>-/---< “ < ”j
сохраняет байт;LḤ‘”-x⁾//jṭ⁶x11¤Fµ,Ñj¢œs3U⁴¡YÑ⁴¡
сохраняет еще 2 таким же образом.Древесный уголь , 56 байт
-8 байт благодаря полностью человеческому и Эрику Аутгольферу!
Попробуйте онлайн!
Закрепление случаи dzaima упомянутой Потребовалось немало сказывается на количестве байт. 36 байт, если нам разрешено изменять символы типа
<
и/
.источник
' '.join(s)
работает. Конечно, что можно использовать в древесном угле?Join
работает со строками.' '.join
в Charcoal. Я буду признателен вам обоим.SOGL V0.12 ,
554743 байтаПопробуй здесь!
0 для левого и 1 для правого
источник
Python 2 ,
137136133 байтаПопробуйте онлайн!
1
направо и0
налевоисточник
1-2*d
на-d|1
(отрицаниеd
xor1
).*list('></\\<>')[d::2]
PHP, 175 байт
Запустите с
-nr
первым аргументом =0
для направления вправо или1
влево и вторым аргументом = для текстаили попробуйте в Интернете .
источник
Perl 5 , 126 байт
Код 124 байта + 2 для
-pl
.Попробуйте онлайн!
источник
Кориа , 51 байт
Попробуйте онлайн!
объяснение
Программа состоит из нескольких частей:
1: инициализация
2: необработанный текст
Следующий текст выводится в поле содержимого:
3: постамбл
источник
Excel VBA, 198 байт
Функция анонимного непосредственного окна VBE, которая принимает входные данные в виде строки из
[A1]
диапазона int и int,[B1]
где1
указывает, что плоскость находится слева, и0
указывает, что плоскость находится справа.источник
Google Sheets, 210 байт
Функция анонимного рабочего листа, которая принимает входные данные в виде строки из [A1] и int из диапазона [B1], где 1 указывает, что плоскость находится слева, а 0 указывает, что плоскость находится справа.
источник