Não temos uma pergunta em cadeia há um tempo (cinco dias para ser mais preciso), então vamos a uma.
Dada uma string s
e um número inteiro positivo n
, pegue cada n
elemento th s
, repita-o n
vezes e coloque-o novamente s
.
Por exemplo, se n = 3
e s = "Hello, World!"
, todo terceiro caractere é Hl r!
. Você então repete cada personagem n
para produzir HHHlll rrr!!!
. Em seguida, substitua as letras originais pelas versões repetidas para produzir o produto final deHHHellllo, Worrrld!!!
Você deve realizar esta tarefa no código mais curto possível no seu idioma!
Regras
- Este é um código de golfe, portanto o código mais curto em bytes vence
n
é garantido que seja menor que o comprimentos
e maior que 0- O primeiro caractere de
s
é de onde osn
caracteres são retirados e sempre é repetidon
vezes s
consistirá apenas em ASCII imprimível (o código aponta0x20 (space)
para0x7E (~)
)
Casos de teste
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
como uma matriz de caracteres?s
" <- este é um requisito estrito (substituindo a string original) ou não há problema em apenas gerar o resultado final?Respostas:
Geléia , 3 bytes
A entrada é tomada como s, n .
Experimente online!
Como funciona
fonte
E1 B8 A2 73 C3 97
Gelatina ,
65 bytes-1 byte graças a Nun com vazamento (use a multiplicação de strings do Python.)
Um programa completo, aceitando dois argumentos de linha de comando, a sequência e o número, e imprimindo o resultado.
Experimente online!
Quão?
fonte
x
esquecer×
; obrigado.C3 97 4A 6D C2 A5 C2 A6
JavaScript (ES6), 46 bytes
Recebe entrada na sintaxe de currying
(s)(n)
.Casos de teste
Mostrar snippet de código
fonte
Próton , 44 bytes
Experimente online!
fonte
C # (.NET Core) ,
8482 bytesExperimente online!
fonte
i++
e alterandon[i],i%m<1?m:1
paran[i],i++%m<1?m:1
.n=>m=>...
05AB1E ,
87 bytes-1 byte graças a @Emigna
Experimente online!
Explicação
fonte
ôʒć²×ì?
}
vy
é um foreach,ε
é outro. Curiosamente,ε
não funciona.PowerShell , 51 bytes
Experimente online!
Toma a entrada como uma
char
matriz$a
e o número$n
. Loops$a
e cada iteração gera a letra atual$_
ou a letra atual multiplicada por$n
, com base em um índice em um pseudo-ternário. O índice escolhe entre os dois com base no incremento$i
e depois no módulo$n
. Essas letras são-join
editadas novamente e a corda é deixada no pipeline; saída está implícita.fonte
Python 2 ,
5453 bytesEdit: Salvo 1 byte graças a @Rod
Experimente online!
fonte
x[i]
e[1,n][i%n<1]
economizar espaçoAlice , 25 bytes
Experimente online!
Explicação
fonte
R ,
827675 bytesExperimente online!
Uma função; pega uma string
s
e um número inteiron
e imprime a versão repetida em stdout.Explicação:
R , 55 bytes
Experimente online!
O mesmo algoritmo que o anterior, mas
S
considerado como uma lista de caracteres individuais.fonte
Python 2 , 57 bytes
Experimente online!
fonte
enumerate
seria mais curta?range(len())
no final seria mais longoPython 2 , 53 bytes
Experimente online!
fonte
Japonês , 8 bytes
Teste online!
Explicação
Eu tenho que creditar a idéia de usar
ù
a resposta de @Shaggy aqui . Não sei se teria pensado nisso ...fonte
ë
, para cocô e risadinhas, mas falhei miseravelmente!J, 17 bytes
(...) # ]
tudo em parens cria a string para o J, construído no verbo "copiar". Portanto, por exemplo, se o argumento da esquerda for 3, ele criará a sequência3 1 1
repetida conforme necessário para igualar o número de caracteres no argumento à direita]
, que contém a sequência. Ou seja,#
resolve o problema diretamente, assumindo que podemos fornecer o argumento correto à esquerda:4
deve ser4 1 1 1
repetido e assim por diante.#@]$[,1#~<:@[
, vemos que ele usa o verbo$
em forma de J no meio - esse é o verbo principal desta frase ...$
é#@]
, significando o comprimento#
do argumento direito]
.$
é[,1#~<:@[
, um trem de 5 verbos. O primeiro trem executado é ...1#~<:@[
, o que significa 1 copiado#~
(forma passiva da cópia) um a menos que<:
o argumento esquerdo[
. Este resultado é passado para a bifurcação final:[, ...
significa pegar o argumento esquerdo e acrescentar o resultado que acabamos de calcular, que é uma sequência de1
s.Experimente online!
fonte
]#~[^0=(|i.@#)
para 14 bytesC # (.NET Core) , 61 + 18 = 79 bytes
Experimente online!
fonte
Perl 5,
37, 29 +1 (-p) bytes-8 bytes graças ao comentário de Tom.
Experimente Online
fonte
$n=<>;
vez doBEGIN
bloco , coloquein
na próxima linha de entrada e substitua$-[0]
por,"@-"
já que apenas o primeiro número é avaliado em comparação. Além disso, se você tirar a entrada dan
via-i
você pode apenas usar$^I
em vez de declarar e usar$n
, mas uma vez que este é não-padrão pode não voar ... :)Rotina de código de máquina 6502 , 50 bytes
Esta é uma sub-rotina independente da posição que espera um ponteiro para a sequência de entrada (terminação 0, também conhecida como C-string) em
$fb
/$fc
, um ponteiro para o buffer de saída em$fd
/$fe
e a contagem (n
) em$ff
. Utiliza indexação simples, limitando-se a um comprimento máximo de saída de 255 caracteres (+ 0 byte) devido à arquitetura de 8 bits.Explicação (desmontagem comentada):
Exemplo de programa de código de máquina C64 usando-o :
Este é um programa no assembler no estilo ca65 para o C64 usando esta rotina (importada como
rep
):Demonstração online
Uso:
sys49152,"[s]",[n]
por exemplosys49152,"Hello, World!",3
Importante: Se o programa foi carregado a partir do disco (como na demonstração online), emita um
new
comando primeiro! Isso é necessário porque o carregamento de um programa de máquina elimina alguns ponteiros C64 BASIC.fonte
Java 8,
10076 bytes-24 bytes graças a @ OliverGrégoire .
Explicação:
Experimente aqui.
fonte
n->s->{int i,k=0;for(char c:s)for(i=k++%n<1?n:1;i-->0;)System.out.print(c);}
(com umchar[]
, em vez deString
.)MATL ,
107 bytes-3 bytes graças a Luis Mendo!
Experimente online!
Recebe entrada como
n
e, em seguida,S
como uma matriz de caracteres / caracteres.fonte
Haskell ,
5146 bytesObrigado @Laikoni por me salvar 5 bytes!
Experimente online!
Explicação / Ungolfed
O operador
c <$ [a..b]
substitui cada elemento da lista[a,a+1...b]
porc
- portanto, é apenas um jogo de golfereplicate
:fonte
Carvão , 14 bytes
Experimente online! Link é a versão detalhada do código. Toma entrada na ordem
n
,s
.fonte
V , 13 bytes
Experimente online!
Esta é uma solução realmente burra.
òlhÀälÀlÀ<M-->l
deve funcionar, mas eu não posso para a vida de me entender por que, especialmente desde manualmente fazendolhÀälÀlÀ<M-->l
repetido um monte de vezes faz o trabalho.Hexdump:
Explicação:
fonte
'l' for right
... Acho que isso é uma coisa de Vim de sobra? Caso contrário ... por quê ?l
está certo no vim. pode estar ortograficamente para trás, mas é geometricamente correto:l
é a tecla da letra mais à direita da linha do meio.Pitão , 12 bytes
Experimente aqui.
fonte
Python 3 , 58 bytes
Trabalhando no golfe.
Eu sei que já existem outras respostas em Python, mas pensei em postar essa também, uma vez que tem uma pontuação muito boa em comparação com as outras, apesar de ser uma função completa e não uma lambda.
Pega a entrada como parâmetros de função e imprime em
STDOUT
.Experimente online!
Por um byte a menos (57), codifiquei um lambda, no entanto, respostas semelhantes já foram publicadas por outros usuários:
fonte
Brain-Flak (BrainHack) , 122 + 3 (
-A
) = 125 bytesTenho certeza de que isso é muito longo, mas passei um bom tempo procurando e não consegui encontrar nenhuma melhoria.
Experimente online!
fonte
05AB1E ,
1211 bytesExperimente online!
Explicação
fonte
Mathematica, 71 bytes
Experimente online!
salvou -2 bytes ouvindo user202729
fonte
Map
maisCharacters
pode ser mais curto.K (oK) ,
2319 bytesSolução:
Experimente online!
Exemplos:
Explicação:
Notas:
fonte
Excel VBA, 71 bytes
Função de janela imediata VBE anônima que leva a entrada do intervalo
[A1:B1]
e as saídas para a janela imediata VBE.fonte