(Вдохновленный этим вызовом )
Учитывая две входные строки, одна из которых ровно на один символ длиннее другой, упорядочивает строки в ASCII-графику, как если бы они были двумя половинами молнии, которая застегнута только наполовину. Более длинное слово образует нижнюю часть молнии и является первым и последним символом объединенной части на молнии. Поскольку этот абзац трудно понять, взгляните на несколько примеров:
zippered
paragraph
z
i
p
p
gerraepdh
a
r
a
p
Обратите внимание, как paragraph
(более длинное слово) образует нижнюю застежку-молнию, и g r a p h
часть инкапсулирует e r e d
часть zippered
, z i p p
а p a r a
части и смещены относительно друг друга.
вход
- Две строки ASCII в любом удобном формате , одна гарантированно будет одинаковой длины, а другая ровно на один символ длиннее.
- Ни одна строка не будет содержать пробелов, но может содержать любое другое печатное значение ASCII.
- Вы можете принять вход в любом порядке. Пожалуйста, укажите в заявке порядок ввода.
Выход
Результирующее ASCII художественное представление слов на молнии, как описано выше, снова в любом удобном формате.
правила
- Начальные или завершающие символы новой строки или пробелы являются необязательными, при условии, что сами символы выстроены правильно.
- Либо полная программа или функция приемлемы. Если функция, вы можете вернуть вывод, а не распечатать его.
- Если возможно, укажите ссылку на среду онлайн-тестирования, чтобы другие люди могли опробовать ваш код!
- Стандартные лазейки запрещены.
- Это код-гольф, поэтому применяются все обычные правила игры в гольф, и выигрывает самый короткий код (в байтах).
Примеры
ppcg
tests
p
p
sctgs
e
t
string
strings
s
t
r
iinnggs
r
t
s
one guaranteed to be even in length and the other exactly one character longer.
Более короткая строка всегда четнаяОтветы:
Japt ,
3128 байтПроверьте это онлайн! Сначала берет более короткую строку.
объяснение
источник
Древесный уголь ,
3331 байтПопробуйте онлайн! Ссылка на подробную версию кода. Сначала берет более короткую строку. Изменить: 2 байта сохранены путем настройки обнаружения средней точки. Объяснение:
Переверните каждую строку по очереди.
Зацикливайтесь на каждом символе строки по очереди.
Напечатайте символ и переместите дополнительный квадрат вправо.
Для первой половины строки также переместите курсор вниз или вверх, в зависимости от ситуации.
После печати первой строки перейдите к начальной точке второй строки и замените первую строку второй, чтобы она была напечатана для второго цикла. (Код выполняется в обоих циклах, но во второй раз он не работает.)
источник
Pyth , 35 байт
Попробуйте онлайн!
источник
Желе ,
2726 байт-1 байт благодаря Erik the Outgolfer (используйте repeat,,
¡
чтобы заменить if?
, и переданное условие else¹
)Полная программа, которая печатает результат с начальным пробелом, как разрешено в вопросе (или двоичная ссылка, возвращающая список символов).
Попробуйте онлайн!
Как?
источник
C¹Ḃ?
->CḂ¡
Python 2 ,
128119 байтовПопробуйте онлайн!
источник
V ,
473830272625 байтовНаконец победить текущий ответ желе \ O /
Принимает ввод с длинным словом сверху
Объяснение не за горами, не думайте, что в гольфе есть что-то еще.
Попробуйте онлайн!
объяснение
источник
V , 79 байтов
Попробуйте онлайн!
Следующее должно быть прочитано с большим количеством сарказма и воздушных кавычек .
Почему я продолжаю делать это для себя?
HexDump:
источник
Желе , 28 байт
Попробуйте онлайн!
Woo Jelly на самом деле участвует в соревнованиях по стрингу и искусству ! \ о /
источник
Ṗ
не добавит завершающий пробел, но завершающий1
. И если вы пропустите все, что связано с пробелами, удалится последовательность букв. Как правило, этот алгоритм использует индексирование, чтобы буквы попадали в определенный индекс в столбце, а затем остальные заполнялись пробелами, так что я думаю, что это не может быть дальше. По крайней мере, я рад, что Желе не превзошел CJam. ;)05AB1E ,
2623 байтаПопробуйте онлайн!
объяснение
С примером ввода =
ppcg, tests
источник
C # (.NET Core) , 163 байта
Попробуйте онлайн!
Вероятно, здесь много игры в гольф, но вот начальная попытка без LINQ. Лямбда-функция, которая сначала берет более длинное слово и возвращает строку с выходным значением.
источник
l=>s=>
) , то естьFunc<input1, Func<input2, output>>
.Java 8, 216 байт
Лямбда с карри: принимает
String
и возвращает лямбду изString
вString
. Параметр для внешней лямбды - это более короткая строка.Невозможность индексировать в
String
s с синтаксисом массива ... неудачно.Неуправляемая лямбда
объяснение
l
является длиной более короткого ввода иi
является многоцелевым индексом, инициализированным для ссылки на первый символ второй половины более короткого ввода.o
накапливает результат, вp
конечном итоге хранит места для заполнения иn
является псевдонимом для"\n"
.Первый цикл перемежает вторые половины двух строк (исключая последний символ более длинного ввода) и создает
p
правильное количество отступов для средней строки.Следующая строка завершает среднюю строку вывода.
Я хотел бы извиниться перед Джеймсом Гослингом за второй цикл. Это добавляет линии выше и ниже средней линии изнутри. Ввод цикла,
i
являетсяl - 1
, таким образом один символ заполнения предваряется вместе с последним символом первой половины короткой строки.i
уменьшается, так что следующий отступ (добавленный к результату) будет короче символа. Посредством целочисленного деления добавляется тот же символ позиции для более длинной строки. Это повторяется, и завершенный результат возвращается.Классная вещь
Линия 13 раньше была
потому что без пустой строки,
+
добавил значения символов вместе и добавил числовую строку. Путем расширения составного присваивания сначала выполняется конкатенацияo
иt.charAt(i)
, что дает желаемый результат без необходимости в пустой строке, сохраняя 2 байта. Это первый раз, когда я вижу составное назначение, которое ведет себя не так, как его расширение.источник
Javascript (ES6),
140 137133 байтаВполне уверен, что это может быть дальше
источник
`<newline>`+` `
объединить`<newline> `
? (Я не знаю JS).Mathematica, 174 байта
вход
источник
TXR Lisp , 126 байт
источник
PHP,
149129 байтЗапустите
-nr
или попробуйте онлайн .источник
Perl 5 , 163 байта
Попробуйте онлайн!
Сначала берет длинную строку.
источник