Dada uma sequência s
e um número inteiro positivo N
, duplique cada caractere gradualmente mais e mais até N
duplicar e, depois, permaneça N
duplicado até os N
caracteres afastarem-se do final e, em seguida, desça novamente.
Por exemplo, dado abalone
e 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
e o resultado seria abbaaalllooonne
.
É garantido que a cadeia tenha comprimento maior que 2N
e possua apenas caracteres de a
até z
.
Mais casos de teste:
N string output
2 aaaaa aaaaaaaa
3 abcdabcdabcd abbcccdddaaabbbcccdddaaabbbccd
Isso é código-golfe . A resposta mais curta em bytes vence. Aplicam-se brechas padrão .
Python 2 , 57 bytes
Experimente online!
Também 57:
Python 2 , 57 bytes
Experimente online!
fonte
len(s[:i][:n])
? Estou convencido de que há uma maneira mais curta de obter esse número, mas não sei como.min(len(s),i,n)
. Bom trabalho!JavaScript (ES6),
6765 bytes-2 bytes graças ao método mais curto de Chas Brown usando
min()
.Toma de entrada na sintaxe currying:
f("abalone")(3)
.Snippet de teste
fonte
Geléia ,
87 bytesExperimente online!
Como funciona
-1 byte graças a @LeakyNun
fonte
J«¥@«U$x@
de 9 bytes.x@⁸
é equivallent para⁸x
(eu usei⁸
aqui)Haskell ,
6160 bytesObrigado a @Laikoni por ajudar a reduzir 1 byte
Experimente online!
Ungolfed:
fonte
do
bloco! Salve um byte, soltando os parênteseslength(s)
.Haskell (Lambdabot), 74 bytes
Experimente online!
fonte
>>=id
J, 24 bytes
O bit em parens -
(<.&n<./(|.,:[)>:i.#s)
- cria a1 2 ... n n n ... 2 1
matriz da seguinte maneira:quando tivermos isso, o
#
operador de J fará automaticamente exatamente o que foi solicitado, duplicando cada elemento o número de vezes especificado.Curioso para ver o aperfeiçoamento de um especialista em J ...
fonte
[#~#@[$([:>:<:,&:i.-)@]
(talvez um espaço perdido tenha sido pego lá). Estou sem saber por que o gancho não está pegando,x
mas não estou em posição de me importar.PHP> = 7.1, 75 bytes
Sandbox do PHP Online
PHP> = 7.1, 78 bytes
Sandbox do PHP Online
PHP> = 7.1, 80 bytes
Sandbox do PHP Online
fonte
Japonês ,
1110 bytesTeste-o
Explicação
Entrada implícita de sequência
U
e número inteiroV
.Mapeie
U
e substitua todos os personagens.Obtenha o mínimo de
V
, ...T
(inicialmente0
) incrementado por 1, ...E o índice do caractere atual (
E
) subtraído de (n
) o comprimento (Ê
) deU
.Repita o caractere atual várias vezes.
Saída implícita da sequência final.
fonte
R , 87 bytes
Experimente online!
fonte
Python 2 68 bytes
fonte
f=
da resposta; a função pode ser anônima. Com isso em mente, você pode remover 3 bytes comlambda s,n:''.join(c*min(i+1,len(s)-i,n)for i,c in enumerate(s))
.Casca ,
109 bytesExperimente online!
A primeira linha é a função principal, repete cada letra n vezes e depois chama a segunda linha duas vezes.
A segunda linha pega no máximo N letras de cada grupo de letras repetidas, onde N é o índice baseado em 1 do grupo, e depois inverte a lista.
fonte
Haskell , 68 bytes
Experimente online!
fonte
APL (Dyalog) , 15 bytes
{
…}
Função em que o argumento esquerdo (cap) é ⍺ e o argumento direito (string) é ⍵ :≢⍵
conte o número de caracteres na sequência⍳
gerar que muitas Ɩ ntegersi←
armazenar em i⌽
marcha réi⌊
mínimo pareado com i⍺⌊
mínimo par a par com a tampa⍵/⍨
use esses números para replicar as letras da stringExperimente online!
fonte
F # , 96 bytes
Experimente online!
Um porto de Justin Mariners javascript answer
fonte
Java (OpenJDK 8) ,
10197 bytesExperimente online!
Muito jogando com índices ...
fonte
Abalone é um tipo de peixe (bem, um marisco), portanto…
> <> , 79 bytes
Experimente online ou assista no playground de peixes !
Lê a string de STDIN e assume que o número já está na pilha.
Explicação: A segunda, quarta e sexta linhas são os loops principais. Os detalhes são uma manipulação feia da pilha, mas em linhas gerais, primeiro, a segunda linha preenche a pilha alternando entre um caractere de entrada e min ( i , n ), onde n é o limite de comprimento e i é o índice do caractere em a entrada: para "abalone", 3, a pilha parece
Em seguida, a linha 4 passa pela pilha da mesma maneira no sentido inverso, para obter a extremidade direita da tampa adequadamente:
A sexta linha pega cada par de caracteres e números e imprime o caractere tantas vezes quanto o número.
fonte