Имея строку s
и положительное целое число N
, постепенно дублируйте каждый символ все больше и больше, пока не N
появятся дубликаты, а затем оставайтесь на уровне N
дубликатов до тех пор, пока N
символы не уйдут от конца, а затем отступите еще раз.
Например, учитывая abalone
и 3
:
a we start with 1 copy
bb then 2 copies
aaa then 3 copies, which is our second parameter
lll so we continue using 3 copies
ooo until we reach the end
nn where we use 2 copies
e and then finally 1 copy
и результат будет abbaaalllooonne
.
Гарантируется, что длина строки больше чем 2N
и содержит только символы от a
до z
.
Больше тестов:
N string output
2 aaaaa aaaaaaaa
3 abcdabcdabcd abbcccdddaaabbbcccdddaaabbbccd
Это код-гольф . Кратчайший ответ в байтах побеждает. Применяются стандартные лазейки .
Python 2 , 57 байт
Попробуйте онлайн!
Также 57:
Python 2 , 57 байт
Попробуйте онлайн!
источник
len(s[:i][:n])
? Я убежден, что есть более короткий способ получить это число, но я не уверен, как.min(len(s),i,n)
. Прекрасная работа!JavaScript (ES6),
6765 байт-2 байт благодаря короче метод Брауна Час использования
min()
.Принимает ввод в синтаксисе Карринг:
f("abalone")(3)
.Тестовый фрагмент
источник
Желе ,
87 байтПопробуйте онлайн!
Как это устроено
-1 байт благодаря @LeakyNun
источник
J«¥@«U$x@
для 9 байтов.x@⁸
эквивалентен⁸x
(я использовал⁸
здесь)Haskell ,
6160 байтСпасибо @Laikoni за помощь, чтобы сбрить 1 байт
Попробуйте онлайн!
Ungolfed:
источник
do
блока! Сохраните байт, опустив скобкиlength(s)
.Haskell (Lambdabot), 74 байта
Попробуйте онлайн!
источник
>>=id
J, 24 байта
Бит в скобках -
(<.&n<./(|.,:[)>:i.#s)
- создает1 2 ... n n n ... 2 1
массив следующим образом:как только мы получим это,
#
оператор J автоматически сделает именно то, о чем просил, дублируя каждый элемент указанное количество раз.Любопытно увидеть улучшение J эксперта по этому вопросу ...
источник
[#~#@[$([:>:<:,&:i.-)@]
(возможно, там попало свободное пространство). Я в растерянности относительно того, почему крюк не берет,x
но не в слишком большом положении, чтобы заботиться.PHP> = 7.1, 75 байт
PHP Sandbox Online
PHP> = 7.1, 78 байт
PHP Sandbox Online
PHP> = 7.1, 80 байт
PHP Sandbox Online
источник
Japt ,
1110 байтПроверь это
объяснение
Неявный ввод строки
U
и целого числаV
.Карта
U
и заменить каждого персонажа.Получи минимум
V
...T
(изначально0
) увеличивается на 1, ...И индекс текущего символа (
E
) вычитается из (n
) длины (Ê
) изU
.Повторите текущий символ много раз.
Неявно выведите окончательную строку.
источник
R , 87 байт
Попробуйте онлайн!
источник
Python 2 68 байт
источник
f=
в ответе; функция может быть анонимной. Имея это в виду, вы можете удалить 3 байта с помощьюlambda s,n:''.join(c*min(i+1,len(s)-i,n)for i,c in enumerate(s))
.Шелуха ,
109 байтПопробуйте онлайн!
Первая строка является основной функцией, она повторяет каждую букву n раз, а затем дважды вызывает вторую строку.
Вторая строка содержит не более N букв из каждой группы повторяющихся букв, где N - это индекс группы, основанный на 1, а затем переворачивает список.
источник
Haskell , 68 байт
Попробуйте онлайн!
источник
APL (Dyalog) , 15 байтов
{
…}
Функция, в которой левый аргумент (cap) равен ⍺, а правый аргумент (строка) - ⍵ :≢⍵
посчитать количество символов в строке⍳
генерировать , что многие ɩ ntegersi←
магазин в я⌽
задний ходi⌊
попарно минимум с I⍺⌊
попарный минимум с заглушкой⍵/⍨
использовать эти цифры для репликации букв строкиПопробуйте онлайн!
источник
F # , 96 байт
Попробуйте онлайн!
Порт Джастина Маринерса javascript ответ
источник
Java (OpenJDK 8) ,
10197 байтПопробуйте онлайн!
Столько игр с индексами ...
источник
Ушка - тип рыбы (ну, моллюск), поэтому ...
> <> , 79 байт
Попробуйте онлайн или посмотрите на рыбной площадке !
Читает строку из STDIN и предполагает, что число уже находится в стеке.
Пояснение: вторая, четвертая и шестая строки являются основными циклами. Детали - это некрасивые манипуляции со стеком, но в общих чертах, во-первых, вторая строка заполняет стек, чередуя символы ввода и min ( i , n ), где n - это длина cap, а i - индекс символа в вход: для "ушка", 3, стек выглядит так
Затем строка 4 проходит через стек таким же образом в обратном порядке, чтобы правильно закрыть правую сторону:
Затем шестая строка берет каждую пару символ-число и печатает символ столько раз, сколько число.
источник