Вызов
Имея строку, описывающую правило резки, и другую строку, вырежьте части из второй строки, используя правило, описанное в первой строке.
Обе строки будут состоять из букв a-z
или A-Z
того, что вы выберете (они не должны быть представлены одинаково). Способ изменения второй строки описан ниже:
Алгоритм
Возьмите первую строку и представьте, что заполняете пробелы между несмежными (увеличивающимися) буквами =
; например, abcfg
=> abc==fg
. Затем выровняйте две строки и верните все символы из первой строки, которые не находятся выше знака равенства. Например, учитывая abcfg
и в qrstuvw
качестве входных данных:
qrstuvw - Modify
abc==fg - Modifier
qrs--vw -> qrsvw
Если модификатор короче после заполнения знаками равенства, все завершающие символы во второй строке должны быть включены. Если модификатор длиннее, завершающие символы игнорируются.
Модификатор не гарантированно будет отсортирован.
Тестовые случаи
abcfg, qrstuvw -> qrsvw
abqrs, qwertyuiopasdfghjklzxcvbnm -> qwjklzxcvbnm
za, qr -> qr
azazaz, qwertyuioplkjhgfdsazxcvbnmnbvcxzasdfghjklpoiuytrewq -> qmn
Реализация ссылок (используется для генерации тестовых случаев) -> TIO
правила
- Применяются стандартные лазейки
- Вы можете воспринимать ввод как две строки, два списка символов, матрицу символов и т. Д. (Любой другой приемлемый формат приемлем)
- Вы можете вывести в виде строки или списка символов (или некоторого другого стандартного формата для строк)
- Это код-гольф , поэтому самый короткий ответ в байтах на каждом языке объявляется победителем для своего языка. Ответ не будет принят.
- Любая строка может быть пустой.
Счастливого гольфа!
Вдохновленный двумя последними проблемами Кевина Круйссена, «Там я исправил это (с лентой / веревкой )»
There, I blew it up (with a segfault)
Ответы:
JavaScript (ES6),
8180 байтПринимает ввод в синтаксисе карри
(modify)(modifier)
.Попробуйте онлайн!
комментарии
источник
Python 3 , 99 байт
Попробуйте онлайн!
источник
05AB1E ,
2017 байтПопробуйте онлайн!
Вычисляет расстояние ASCII между каждым символом, добавляя столько пробелов, если оно положительное. Отрицательное расстояние приводит к добавлению 0 пробелов согласно спецификации. После этого я вставляю все символы с теми же индексами в строке 2, что и пробелы в первой управляемой строке.
90% уверены, что я могу потерять еще 2-3 байта, не используя пробелы, но помещая символ в индекс N. Все еще работаю над этим вариантом в данный момент ... Что моя «лучшая идея» закончилась так:
05AB1E , 18 байт
Попробуйте онлайн!
Я чувствую, что что-то упустил, если вы видите улучшения
ε1‚Z}
,ʒ²g‹}
или0¸ì
ЛМК ...Ç¥ε1‚Z}ηO0¸ìè
было 13, но это оборачивает , когдаn > |input_2|
кinput_2[n%|input_2|]
...источник
IgÅ1«
, но, может быть, есть лучший способ?Stax , 15 байт
Запустите и отладьте его
Это представление ascii.
источник
╟╣i
Желе , 14 байт
Двоичная ссылка, принимающая модификатор в виде списка символов слева и список символов для изменения справа, возвращающий списки символов.
Попробуйте онлайн!
Как?
источник
¬
трюк в моем ответе. :) (у нас технически тот же алгоритм, но вы сделали короче, молодец!)¬
, но забыл, когда я сделал сообщение для мобильного телефона жирным пальцем о еще не готовой попытке 13 байтов.JavaScript (ES6), 79 байт
Использует тот же алгоритм для вычисления расстояния между буквами, что и мой последний ответ .
Тестовые случаи:
Показать фрагмент кода
источник
APL (Dyalog Classic) ,
353432 байтаПопробуйте онлайн!
источник
K (нгн / к) ,
272425 байтПопробуйте онлайн!
источник
Haskell , 49 байтов
Попробуйте онлайн!
источник
Perl 5 , 45 байт
Попробуйте онлайн!
источник
Рубин ,
6864 байтаПопробуйте онлайн!
источник
Уголь ,
2928 байтПопробуйте онлайн! Ссылка на подробную версию кода. Основываясь на моем ответе Там, я исправил это с лентой. Объяснение:
Примечание. Это должно быть 28 байт, ноAnd
оно не работает на момент написания.источник
Java 8, 117 байт
Объяснение:
Попробуйте онлайн.
источник