Учитывая 2 входа, строку и десятичное число, выведите строку, умноженную на это число.
Подвох в том, что число может быть числом с плавающей точкой или целым числом.
Вы должны вывести время строки floor(n)
и затем первые floor((n-floor(n))*len(string))
буквы снова.
Другие заметки:
- Ввод не всегда будет с плавающей точкой, это может быть int. Так что 1,5, 1 и 1,0 все возможно. Это всегда будет в базе 10, хотя, и если вы хотите исключение, пожалуйста, прокомментируйте.
- Строка ввода может содержать пробелы, кавычки и другие символы. Никаких символов новой строки или контрольных символов.
- Встроенные модули для прямого повторения строк
'a'*5
не допускаются , даже умножение строк, например, Python . Однако добавление строки разрешено.
Тестовые случаи:
Запятая и пробел разделяют входы.
test case, 1 -> test case
case, 2.5 -> casecaseca
(will add more later), 0.3333 -> (will(space)
cats >= dogs, 0.5 -> cats >
Заключительное примечание:
Я вижу много ответов, в которых используются встроенные функции умножения или повторения строк. Это не разрешено @ Ответ VTC в это действует , хотя, потому что он не умножать строку, только вход с плавающей точкой. Таким образом, окончательное правило таково: если оно непосредственно умножает строку, вы не можете это сделать.
direct
повторение строки (что это значит?). Но в целом вы правыjoin "", ("case") x 2
против"case" x 2
, в Perl 6[~] "case" xx 2
против того же самого"case" x 2
Ответы:
Желе, 5 байт
Не использует встроенное повторение. Попробуйте онлайн!
Как это устроено
источник
Ява 7, 89
принимает char [] и float и выводит в STDOUT. базовый цикл
источник
Pyth,
981 байт благодаря Pietu1998
Это берет
floor(n * len(string))
буквы из строки, используя циклическое индексирование. Я считаю, что это всегда эквивалентно данной формуле.Тестирование
источник
s
.range
это смешноJavaScript (ES6), 50 байт
Отредактируйте еще 2 байта, чтобы включить определение функции
f
. 1 байт меньше, используя подсказку @manatwork. Примечание: используя~
у нас больше итераций, чем необходимо, но это код гольф и даже 1 байтТЕСТОВОЕ ЗАДАНИЕ
источник
n>0
в коде иn>1
в тестовом примере.~n
? (На самом деле просто вопрос. Пробовал только данные тесты.)f
определено в вашем решении? Вы не пропалиf=
?Витси, 9 байт
Ожидает слово в качестве аргумента, а число умножается на STDIN.
Попробуйте онлайн!
источник
Grab all string argument input.
и тоParse STDIN.
опять?CJam, 10 байтов
Строка указана в первой строке STDIN, а плавающая во второй.
Проверьте это здесь.
объяснение
источник
Python 2, 71 байт
Попробуй это здесь!
Создает безымянную лямбду, которая принимает строку в качестве первого аргумента и число с плавающей запятой в качестве второго. Возвращает повторенную строку.
Это может быть 46, если разрешены встроенные повторения строк :(
источник
Рубин,
4948 символовОбразец прогона:
источник
Perl 6 ,
46 4139 байтВ Perl 6 есть как оператор повторения строк, так
x
и оператор повторения спискаxx
.Так как правила запрещают повторение строк, мы повторяем это, как если бы это был список из одного элемента. Затем список объединяется вместе и возвращается его подстрока.
Использование:
источник
substr ([~] $^a xx$^b+1),0,$a.comb*$b}
сохраняет дваosascript, 173 байта
О, мои дни, это хуже, чем я думал.
Возвращает значение строки, другой ответ с использованием циклического индексирования. Ожидает ввода как
"string" "repetitions"
.источник
Oh my days, this is worse than I thought.
Так верно, так верно.set x,y to a's items
?Haskell, 44 байта
Пример использования:
"(will add more later)" # 0.3333
->"(will "
.Как это работает:
c
объединяет бесконечные копии строкиx
. Он ведет себя как встроенныйcycle
.sum[1|a<-s]
является пользовательской функцией длины, которая работает со строгой системой типов Haskell, поскольку она возвращает aDouble
(встроенная функция возвращает a,length
наInt
который невозможно умножитьn
).#
беретfloor (n * length(s))
символы из циклической строкиs
.источник
PHP 5,
96879 байтов сохранено благодаря @manatwork
Довольно прямой ответ зацикливания.
Ungolfed
источник
@
:<?for($i=$z=0;$i++<floor(strlen($a=$argv[1])*$argv[2]);$z++)echo$a[$z]?:$a[$z=0];
error_reporting
Поэтому мы предпочитаем основывать наши решения на конфигурации по умолчанию, а не заботиться о уведомлениях и других полезных привычках. Например, игнорирование инициализации$z
и$i
.R, 59 байт
Как неназванная функция. Это использует charToRaw для разделения строки на вектор необработанных. Он заполняется в массив длиной * l, преобразуется обратно в char и выводится.
Я собирался использовать strsplit, но в итоге он стал длиннее.
Тестовое задание
источник
Perl, 51 + 3 = 54 байта
Требуется:
-n
,-l
и-M5.010
|-E
:Объяснение:
источник
с (макрос препроцессора), 71
Не очень сложно здесь. Просто нужно убедиться
l*m
приведен кint
перед сравнением сj
.Попробуйте онлайн.
источник
Oracle SQL 11.2,
154152 байтаUn-golfed
Я пошел рекурсивным путем, с инициализацией выбора, заботящейся о десятичной части.
Сохранено 2 байта благодаря @MickyT
источник
FLOOR(FLOOR((:2-FLOOR(:2))*LENGTH(:1)))
сMOD(:2,1)*LENGTH(:1)
LPAD
а неSUBSTR
Серьезно, 24 байта
Попробуйте онлайн!
Объяснение:
источник
Pyth, 9 байт
В основном просто делаю
источник