Dadas 2 entradas, uma sequência e um número decimal, produza a sequência multiplicada por esse número.
O problema é que o número pode ser um número flutuante ou um número inteiro.
Você deve imprimir a floor(n)
hora da sequência e, em seguida, as primeiras floor((n-floor(n))*len(string))
letras novamente.
Outras notas:
- A entrada nem sempre será um flutuador, pode ser um int. Portanto, 1,5, 1 e 1,0 são possíveis. Ele sempre estará na base 10 e, se desejar uma exceção, por favor, comente.
- A entrada da string pode conter espaços em branco, aspas e outros caracteres. Não há novas linhas ou caracteres de controle.
- Não
'a'*5
são permitidos embutidos para repetição direta de cadeias, mesmo a multiplicação de cadeias como o python . No entanto, a adição de string é permitida.
Casos de teste:
A vírgula e o espaço separam as entradas.
test case, 1 -> test case
case, 2.5 -> casecaseca
(will add more later), 0.3333 -> (will(space)
cats >= dogs, 0.5 -> cats >
Nota final:
Estou vendo muitas respostas que usam funções internas de multiplicação ou repetição de string. Isso não é permitido. A resposta do @ VTC é válida, porque não multiplica a string, apenas a entrada flutuante. Portanto, a regra definitiva é: se ela multiplica diretamente a string, você não pode fazê-lo.
direct
repetição de string (o que isso significa?). Masjoin "", ("case") x 2
vs"case" x 2
, no Perl 6[~] "case" xx 2
vs o mesmo"case" x 2
Respostas:
Gelatina, 5 bytes
Não usa uma repetição embutida. Experimente online!
Como funciona
fonte
Java 7, 89
pega char [] e flutua e sai para STDOUT. loop básico.
fonte
Pyth,
98Guardado 1 byte graças a Pietu1998
Isso recebe
floor(n * len(string))
letras da string, usando indexação cíclica. Eu acredito que isso é sempre equivalente à fórmula dada.Suíte de teste
fonte
s
.range
é engraçado assim.JavaScript (ES6), 50 bytes
Edite mais 2 bytes para incluir a definição de função
f
. 1 byte a menos usando a dica de @manatwork. Nota: usando~
, temos mais iterações do que o necessário, mas isso é código de golfe e até 1 byte contaTESTE
fonte
n>0
no código vs.n>1
no caso de teste.~n
? (Realmente apenas uma questão julgaram somente os casos de teste dadas..)f
definido na sua solução? Você não está faltandof=
?Vitsy, 9 bytes
Espera a palavra como argumento e o número a ser multiplicado por STDIN.
Experimente online!
fonte
Grab all string argument input.
e entãoParse STDIN.
novamente?CJam, 10 bytes
A cadeia é fornecida na primeira linha de STDIN, a bóia na segunda.
Teste aqui.
Explicação
fonte
Python 2, 71 bytes
Experimente aqui!
Cria uma lambda sem nome que pega a string como primeiro argumento e o float como segundo. Retorna a sequência repetida.
Isso pode ser 46 se os builtins de repetição de string forem permitidos :(
fonte
Ruby,
4948 caracteresExemplo de execução:
fonte
Perl 6 ,
46 4139 bytesO Perl 6 possui um operador de repetição de string
x
e um operador de repetição de listaxx
.Como as regras não permitem a repetição de strings, repetimos como se fosse uma lista de elementos únicos. Em seguida, a lista é concatenada e uma substring é retornada.
Uso:
fonte
substr ([~] $^a xx$^b+1),0,$a.comb*$b}
salva dois caracteresosascript, 173 bytes
Oh meus dias, isso é pior do que eu pensava.
Retorna o valor da string, outra resposta usando indexação cíclica. Espera entrada como
"string" "repetitions"
.fonte
Oh my days, this is worse than I thought.
Tão verdadeiro, tão verdadeiro.set x,y to a's items
?Haskell, 44 bytes
Exemplo de uso:
"(will add more later)" # 0.3333
->"(will "
.Como funciona:
c
concatena infinitas cópias da stringx
. Ele se comporta como o embutidocycle
.sum[1|a<-s]
é uma função de comprimento personalizado que funciona com o sistema de tipo estrito de Haskell, pois retorna aDouble
(o internolength
retorna umInt
que não pode ser multiplicadon
).#
pegafloor (n * length(s))
caracteres da sequência cicladas
.fonte
PHP 5,
96879 bytes salvos graças a @manatwork
Resposta em loop bastante direta.
Ungolfed
fonte
@
:<?for($i=$z=0;$i++<floor(strlen($a=$argv[1])*$argv[2]);$z++)echo$a[$z]?:$a[$z=0];
error_reporting
Portanto, preferimos basear nossas soluções na configuração padrão e não nos preocupar com avisos e outros bons hábitos. Por exemplo, ignorando a inicialização de$z
e$i
.R, 59 bytes
Como uma função sem nome. Isso usa charToRaw para dividir a sequência em um vetor de matérias-primas. Isso é preenchido em uma matriz de comprimento * l, convertida novamente em char e output.
Eu ia usar strsplit, mas acabou sendo mais longo.
Teste
fonte
Perl, 51 + 3 = 54 bytes
Exige:
-n
,-l
e-M5.010
|-E
:Explicação:
fonte
c (macro de pré-processador), 71
Não é muito complicado aqui. Só precisa ter certeza de que
l*m
está convertido em umint
antes de comparar comj
.Experimente online.
fonte
Oracle SQL 11.2,
154152 bytesSem golfe
Eu segui o caminho recursivo, com a seleção de inicialização cuidando da parte decimal.
Guardado 2 bytes graças a @MickyT
fonte
FLOOR(FLOOR((:2-FLOOR(:2))*LENGTH(:1)))
comMOD(:2,1)*LENGTH(:1)
LPAD
vez deSUBSTR
Sério, 24 bytes
Experimente online!
Explicação:
fonte
Pitão, 9 bytes
Basicamente, apenas fazendo
fonte