Введение
Для этого примера возьмем строку Hello, World!
и массив [3, 2, 3]
. Чтобы найти цепочку подстрок, мы пройдем следующий процесс:
Первый номер массива 3
, таким образом, мы получаем подстроку [0 - 3]
, которая есть Hel
. После этого мы удаляем первые 3
символы из исходной строки, что оставляет нас с lo, World!
.
Второе число в массиве 2
, так что мы получаем подстроку [0 - 2]
из нашей новой строки, которая дает нам lo
. Оставшаяся строка становится , World!
.
Последнее число - это то 3
, что нам дает , W
. Подстроки цепь все из подстрок в сочетании, что дает нам:
['Hel', 'lo', ', W']
Для более наглядного примера:
[3, 2, 3], 'Hello, World!'
3 -> Hel
2 -> lo
3 -> , W
Задание
Учитывая , с непустой строкой и в непустой массиве только состоящий из положительных целых чисел ( > 0
), выходные в подстроках цепи . Вы можете предположить, что сумма всех целых чисел в массиве не превышает длину строки.
Вы также можете предположить, что строки никогда не будут содержать новых строк.
Контрольные примеры
Input: abcdefghijk, [2, 1, 3]
Output: ['ab', 'c', 'def']
Input: Code Golf, [4, 1]
Output: ['Code', ' ']
Input: Ayyy, [3]
Output: ['Ayy']
Input: lexicographically, [2, 2, 2, 7, 4]
Output: ['le', 'xi', 'co', 'graphic', 'ally']
Это код-гольф , поэтому выигрывает представление с наименьшим количеством байтов!
Python 2, 42 байта
Иногда ты просто делаешь это скучно.
источник
Брахилог ,
2013 байтПопробуйте онлайн!
Это крайне неэффективно и время ожидания TIO для последнего контрольного примера.
объяснение
Чуть более эффективная версия, 15 байт
источник
Python 3, 45 байт
Это печатает один подстроки в каждой строке и завершается с ошибкой , когда исчерпан.
Проверьте это на repl.it .
источник
Python,
52, 46 байтРекурсивная лямбда-функция.
Спасибо Деннису за то, что он сбрил 6 байтов!
источник
Желе , 6 байт
Попробуйте онлайн!
источник
Haskell, 34 байта
Пример использования:
"lexicographically" # [2,2,2,7,4]
->["le","xi","co","graphic","ally"]
Простая рекурсия.
Или скучное 29-байтовое решение с помощью встроенного:
источник
Рубин, 26 байт
Строки представлены в виде массивов символов.
источник
PowerShell v2 +, 46 байт
Принимает входную строку
$a
и массив$b
, зацикливается$b
. Каждая итерация выполняет срез массива на$a
основе$i
(по умолчанию$null
или0
) и текущего числа. Требуется сделать-1
и$i++
потому что строки в PowerShell с нулевой индексацией.Примеры
(Выходные данные здесь разделены пробелами, потому что это метод строковой классификации по умолчанию для массивов)
источник
Perl, 28 байт
Включает +1 для
-n
Запустите со строкой ввода в STDIN, за которой следуют каждое число в отдельной строке:
Просто код:
23-байтовая версия
||"^"
также не работает, но печатает ложные конечные переводы строк"^"
можно заменить,$_
если строка не содержит метасимволов регулярных выраженийисточник
MATL , 8 байт
Попробуйте онлайн!
объяснение
источник
JavaScript (ES6),
393835 байтСохранено 3 байта благодаря продуктам ETH:
Пример:
Предыдущее решение:
38 байтов благодаря Huntro:
39 байтов:
источник
.slice
сохраняет несколько байтов:s=>a=>a.map(v=>s.slice(t,t+=v),t=0)
Пакетная, 74 байта
Я бью С? Это не может быть правдой! Принимает строку в STDIN и массив в качестве аргументов командной строки.
источник
Java, 119 байт
Golfed:
Я изменил ответ Романа Грефа ( /codegolf//a/93992/59935 ), но у меня недостаточно репутации, чтобы комментировать.
Я изменил реализацию цикла и вместо установки исходной строки на другую подстроку в каждой итерации, я просто меняю индексы, с помощью которых я получаю подстроку.
источник
Пайк, 10 байт
Попробуй это здесь!
источник
sed (82 + 2 для -rn) 84
Первая строка ввода - это строка. Тогда каждая строка после этого является размером подстроки в одинарном формате .
Пример:
источник
CJam , 11 байт
Попробуйте онлайн!
объяснение
источник
C, 81 байт
Поскольку
write()
вывод не буферизирован, любой онлайн-компилятор будет испытывать трудности при его выводе.test.c :
Выход без трубопровода:
источник
PHP, 98 байт
Использование:
Выход:
Вероятно, есть лучшее решение с PHP.
источник
PHP, 82 байта
Принимает ввод в виде строки, а затем список чисел, вывод разделяется новыми строками. например
Если вы один из тех, кто может использовать $ argv с -r, вы можете сохранить 6 байтов, используемых для открывающего тега.
источник
$argv[++$i]
. А почему бы$argv[1]
и нет$argv[2]
?$argv[2]
потому, что нам нужно перебирать аргументы supiled, и это$argv[++$i]
первый раз, когда мы избегаем необходимости в a,$i=1
и, следовательно, экономим 2 байта.PHP, 63 байта
Вывести как массив 85 байт
источник
Pyth, 7 байт
Принимает ввод, разделенный новой строкой, со строкой unesceded и идущей после массива. Попробуйте онлайн!
Объяснение:
источник
Октава / MATLAB, 31 байт
Это анонимная функция с входами
s
: string;a
: числовой массив.Попробуйте это в Ideone .
объяснение
Это порт моего ответа MATL.
источник
Java 142 байта
Golfed:
источник
Awk, 36 символов
Образец прогона:
В реальной жизни я бы использовал это так, просто не знаю, как рассчитать его оценку:
источник
Dyalog APL 16.0, 15 символов (не конкурирующие); 15,0, 17 байт
16.0 решение
Dyalog APL 16,0 добавляет APL2 в раздел примитивно,
⊂
с глифа⊆
.15.0 решение:
Попробуй APL онлайн!
источник
GNU sed, 55 + 2 (флаги rn) = 57 байт
Попробуйте онлайн! (спасибо @Dennis за добавление sed)
Объяснение: Входная строка должна быть в первой строке, а цифры, в одинарном , в отдельных строках после этого. Новая строка неявно читается в начале цикла, каждый раз запуская скрипт.
Тестовый прогон: здесь используется документ с EOF в качестве конечного маркера
Выход:
источник
Vimscript,
7978 байтне очень красиво, я уверен, что это может быть улучшено ...
Принимает буфер vim, затем вызывает,
echom string(A([2,3]))
чтобы увидеть выводЯ на самом деле думал об обмане и выводе строки
["abc", "def"]
... Но я сопротивлялся: PОбъяснение: Удалить (помещает в регистр по умолчанию) каждый массив, перечисляет количество символов и добавляет его в массив
r
... Действительно скучный ответ.источник
Common Lisp,
7876 байтПредполагается, что анонимная функция разрешена:
использование
Выход
-2 байта, используя
as
вместоand
и изменяя определение y, чтобы соответствовать скобкам между двумя переменными в(subseq ...)
источник
Реболь, 38 байт
источник