У нас не было строки вопроса в течение некоторого времени (5 дней, чтобы быть точным), поэтому давайте перейдем к одному.
Получив строку s
и положительное целое число n
, возьмите каждый n
элемент th s
, повторите его n
раз и поместите обратно вs
.
Например, если n = 3
и s = "Hello, World!"
, каждый третий символ Hl r!
. Затем вы повторяете каждый символ n
раз для производства HHHlll rrr!!!
. Затем вы заменяете исходные буквы повторяющимися версиями, чтобы получить конечный продуктHHHellllo, Worrrld!!!
Вы должны выполнить эту задачу в кратчайшие сроки на вашем языке!
правила
- Это код-гольф поэтому выигрывает самый короткий код в байтах
n
гарантированно будет меньше, чем длинаs
и больше 0- Первый символ
s
- это то, откудаn
взяты эти символы, и он всегда повторяется.n
раз s
будет состоять только из печатного ASCII (код указывает0x20 (space)
на0x7E (~)
)
Контрольные примеры
s, n => output
"Hello, World!", 3 => "HHHellllo, Worrrld!!!"
"Code golf", 1 => "Code golf"
"abcdefghijklm", 10 => "aaaaaaaaaabcdefghijkkkkkkkkkklm"
"tesTing", 6 => "ttttttesTingggggg"
"very very very long string for you to really make sure that your program works", 4 => "vvvvery veryyyy verrrry loooong sssstrinnnng foooor yoooou toooo reaaaally makeeee surrrre thhhhat yyyyour proggggram workkkks"
s
как массив символов?s
" <- это строгое требование (перезаписать исходную строку) или нормально просто выводить конечный результат?Ответы:
Желе , 3 байта
Ввод принимается как s, n .
Попробуйте онлайн!
Как это устроено
источник
E1 B8 A2 73 C3 97
Желе ,
65 байт-1 байт благодаря дырявой монахине (используйте умножение строк в Python.)
Полная программа, принимающая два аргумента командной строки, строку и число и печатающая результат.
Попробуйте онлайн!
Как?
источник
x
забыл×
; Благодарю.C3 97 4A 6D C2 A5 C2 A6
JavaScript (ES6), 46 байт
Принимает ввод в синтаксисе карри
(s)(n)
.Контрольные примеры
Показать фрагмент кода
источник
Протон , 44 байта
Попробуйте онлайн!
источник
C # (.NET Core) ,
8482 байтаПопробуйте онлайн!
источник
i++
и изменивn[i],i%m<1?m:1
наn[i],i++%m<1?m:1
.n=>m=>...
05AB1E ,
87 байт-1 байт благодаря @Emigna
Попробуйте онлайн!
объяснение
источник
ôʒć²×ì?
}
vy
- это один foreach,ε
другой. Как ни странно,ε
не работает.PowerShell , 51 байт
Попробуйте онлайн!
char
Вводит как -array$a
и число$n
. Зацикливается,$a
и каждая итерация либо выводит текущую букву$_
или текущую букву, умноженную на$n
, основанную на индексе, в псевдо-троичную. Индекс выбирает между двумя на основе увеличения$i
и затем по модулю$n
. Эти буквы затем-join
объединяются, и строка остается на конвейере; вывод неявный.источник
Python 2 ,
5453 байтаРедактировать: 1 байт сохранен благодаря @Rod
Попробуйте онлайн!
источник
x[i]
и[1,n][i%n<1]
сэкономить местоАлиса , 25 байт
Попробуйте онлайн!
объяснение
источник
R ,
827675 байтПопробуйте онлайн!
Функция; принимает строку
s
и целое числоn
и печатает повторенную версию в стандартный вывод.Объяснение:
R , 55 байт
Попробуйте онлайн!
Тот же алгоритм, что и выше, но со
S
списком отдельных символов.источник
Python 2 , 57 байт
Попробуйте онлайн!
источник
enumerate
будет короче?range(len())
в конце, был бы болееPython 2 , 53 байта
Попробуйте онлайн!
источник
Japt , 8 байт
Проверьте это онлайн!
объяснение
Я должен кредитовать идею использовать
ù
для @Shaggy ответа «s здесь . Я не знаю, что я когда-либо думал об этом сам ...источник
ë
, от хохота и хихиканья, но с треском провалился!J, 17 байт
(...) # ]
все в паранах создает строку для встроенного глагола J «copy». Так, например, если левый аргумент равен 3, он создает строку,3 1 1
повторяемую по мере необходимости, чтобы равняться количеству символов в правом аргументе]
, который содержит строку. То есть#
решает проблему напрямую, предполагая, что мы можем дать ей правильный левый аргумент:4
следует4 1 1 1
повторить и так далее.#@]$[,1#~<:@[
, мы видим, что он использует глагол формы J$
в середине - это основной глагол этой фразы ...$
is#@]
, что означает длину#
правого аргумента]
.$
-[,1#~<:@[
поезд из 5 глаголов. Первый выполненный поезд ...1#~<:@[
, что означает, что 1 скопированная#~
(пассивная форма копирования) на один меньше, чем<:
левый аргумент[
. Этот результат передается на финальную ветвь:[, ...
то есть взять левый аргумент и добавить только что вычисленный результат, который представляет собой строку1
s.Попробуйте онлайн!
источник
]#~[^0=(|i.@#)
за 14 байтC # (.NET Core) , 61 + 18 = 79 байт
Попробуйте онлайн!
источник
Perl 5,
37, 29 +1 (-p) байт-8 байт благодаря комментарию Тома.
Попробуйте онлайн
источник
$n=<>;
вместоBEGIN
блока и иметьn
следующую строку ввода и заменить$-[0]
на,"@-"
так как для сравнения оценивается только первое число. Кроме того, если вы принимаете вводn
через via,-i
вы можете просто использовать$^I
вместо объявления и использования$n
, но, поскольку это нестандартно, оно может не летать ... :)6502 подпрограммы машинного кода , 50 байтов
Это позиционно-независимая подпрограмма, ожидающая указатель на входную строку (0-концевая a-C-строка) в
$fb
/$fc
, указатель на выходной буфер в$fd
/$fe
и count (n
) в$ff
. Он использует простую индексацию, поэтому максимальная длина вывода составляет 255 символов (+ 0 байт) из-за 8-битной архитектуры.Пояснение (комментируется разборка):
Пример программы с машинным кодом C64, использующей ее :
Это программа на ассемблере стиля ca65 для C64, использующая эту подпрограмму (импортируется как
rep
):Онлайн демо
Использование:
sys49152,"[s]",[n]
напримерsys49152,"Hello, World!",3
Важно: если программа была загружена с диска (как в онлайн-демонстрации),
new
сначала введите команду! Это необходимо, потому что при загрузке машинной программы перегружаются некоторые основные указатели C64.источник
Java 8,
10076 байт-24 байта благодаря @ OliverGrégoire .
Объяснение:
Попробуй это здесь.
источник
n->s->{int i,k=0;for(char c:s)for(i=k++%n<1?n:1;i-->0;)System.out.print(c);}
(сchar[]
, а неString
.)MATL ,
107 байт-3 байта благодаря Луису Мендо!
Попробуйте онлайн!
Принимает ввод как,
n
а затемS
как массив строк / символов.источник
Haskell ,
5146 байтСпасибо @Laikoni за то, что сэкономили мне 5 байтов!
Попробуйте онлайн!
Объяснение / Ungolfed
Оператор
c <$ [a..b]
заменяет каждый элемент списка[a,a+1...b]
наc
- так что это просто игра в гольфreplicate
:источник
Древесный уголь , 14 байтов
Попробуйте онлайн! Ссылка на подробную версию кода. Принимает входной сигнал в порядке
n
,s
.источник
V , 13 байт
Попробуйте онлайн!
Это действительно тупой обходной путь.
òlhÀälÀlÀ<M-->l
должно работать, но я не могу за жизнь мне понять , почему, тем более , что вручную DoinglhÀälÀlÀ<M-->l
повторяется кучу раз делает работу.HexDump:
Объяснение:
источник
'l' for right
... Я полагаю, это что-то вроде Vim? Иначе ... почему ?l
, прямо в Vim. это может быть орфографически задом наперед, но это геометрически правильно:l
это самый правый буквенный ключ среднего ряда.Pyth , 12 байт
Попробуй это здесь.
источник
Python 3 , 58 байт
Работаю над игрой в гольф.
Я знаю, что уже есть другие ответы на Python, но я подумал, что опубликую и этот, увидев, что он довольно неплох по сравнению с остальными, несмотря на то, что это полноценная функция, а не лямбда.
Принимает ввод как параметры функции и печатает в
STDOUT
.Попробуйте онлайн!
На один байт меньше (57) я кодировал лямбду, однако подобные ответы уже были опубликованы другими пользователями:
источник
Brain-Flak (Брейнхак) , 122 + 3 (
-A
) = 125 байтЯ уверен, что это слишком долго, но я потратил довольно много времени на поиски и не смог найти никаких улучшений.
Попробуйте онлайн!
источник
05AB1E ,
1211 байтПопробуйте онлайн!
объяснение
источник
Mathematica, 71 байт
Попробуйте онлайн!
сохранено -2 байта при прослушивании user202729
источник
Map
болееCharacters
может быть короче.К (ок) ,
2319 байтРешение:
Попробуйте онлайн!
Примеры:
Объяснение:
Примечания:
источник
Excel VBA, 71 байт
Функция анонимного непосредственного окна VBE, которая берет входные данные из диапазона
[A1:B1]
и выводит в непосредственное окно VBE.источник