Dada una cadena sy un número entero positivo N, gradualmente duplique cada carácter más y más hasta que se Nduplique, y luego manténgase en los Nduplicados hasta que los Ncaracteres se alejen del final, luego vuelva a bajar.
Por ejemplo, dado abaloney 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
y el resultado sería abbaaalllooonne.
Se garantiza que la cadena tiene una longitud mayor 2Ny solo tiene caracteres de aa z.
Más casos de prueba:
N string output
2 aaaaa aaaaaaaa
3 abcdabcdabcd abbcccdddaaabbbcccdddaaabbbccd
Este es el código de golf . La respuesta más corta en bytes gana. Se aplican lagunas estándar .

Python 2 , 57 bytes
Pruébalo en línea!
También 57:
Python 2 , 57 bytes
Pruébalo en línea!
fuente
len(s[:i][:n])? Estoy convencido de que hay una forma más corta de obtener ese número, pero no estoy seguro de cómo.min(len(s),i,n). ¡Gran trabajo!JavaScript (ES6),
6765 bytes-2 bytes gracias al método más corto de Chas Brown usando
min().Toma de entrada en la sintaxis currificación:
f("abalone")(3).Fragmento de prueba
fuente
Jalea ,
87 bytesPruébalo en línea!
Cómo funciona
-1 byte gracias a @LeakyNun
fuente
J«¥@«U$x@de 9 bytes.x@⁸es equivalente a⁸x(solía⁸aquí)Haskell ,
6160 bytesGracias a @Laikoni por ayudar a reducir 1 byte
Pruébalo en línea!
Sin golf:
fuente
dobloque! Guarde un byte colocando el paréntesislength(s).Haskell (Lambdabot), 74 bytes
Pruébalo en línea!
fuente
>>=idJ, 24 bytes
El bit en parens -
(<.&n<./(|.,:[)>:i.#s)crea la1 2 ... n n n ... 2 1matriz de la siguiente manera:Una vez que tenemos eso, el
#operador de J automáticamente hace exactamente lo que pidió, duplicando cada elemento el número de veces especificado.Curioso por ver la mejora de un experto J en esto ...
fuente
[#~#@[$([:>:<:,&:i.-)@](tal vez un espacio perdido quedó atrapado allí). No sé por qué el gancho no está funcionando,xpero no está en una posición demasiado importante para preocuparse.PHP> = 7.1, 75 bytes
PHP Sandbox en línea
PHP> = 7.1, 78 bytes
PHP Sandbox en línea
PHP> = 7.1, 80 bytes
PHP Sandbox en línea
fuente
Japt ,
1110 bytesPruébalo
Explicación
Entrada implícita de cadena
Uy enteroV.Mapa
Uy reemplazar cada personaje.Obtenga el mínimo de
V...T(inicialmente0) incrementado en 1, ...Y el índice del carácter actual (
E) se resta de (n) la longitud (Ê) deU.Repite el personaje actual muchas veces.
Salida implícita de la cadena final.
fuente
R , 87 bytes
Pruébalo en línea!
fuente
Python 2 68 bytes
fuente
f=en la respuesta; La función puede ser anónima. Con eso en mente, puede eliminar 3 bytes conlambda s,n:''.join(c*min(i+1,len(s)-i,n)for i,c in enumerate(s)).Casco ,
109 bytesPruébalo en línea!
La primera línea es la función principal, repite cada letra n veces y luego llama a la segunda línea dos veces.
La segunda línea toma como máximo N letras de cada grupo de letras repetidas, donde N es el índice basado en 1 del grupo, luego invierte la lista.
fuente
Haskell , 68 bytes
Pruébalo en línea!
fuente
APL (Dyalog) , 15 bytes
{…}Función donde el argumento izquierdo (cap) es ⍺ y el argumento derecho (cadena) es ⍵ :≢⍵cuenta el número de caracteres en la cadena⍳generar esa cantidad de Ɩ ntegersi←almacenar en i⌽marcha atrási⌊mínimo por pares con i⍺⌊mínimo por pares con la tapa⍵/⍨usa esos números para replicar las letras de la cadenaPruébalo en línea!
fuente
F # , 96 bytes
Pruébalo en línea!
Un puerto de respuesta de JavaScript de Justin Mariners
fuente
Java (OpenJDK 8) ,
10197 bytesPruébalo en línea!
Tanto jugar con índices ...
fuente
El abulón es un tipo de pescado (bueno, un marisco), por lo tanto ...
> <> , 79 bytes
¡Pruébelo en línea o mírelo en el área de juegos para peces !
Lee la cadena de STDIN y supone que el número ya está en la pila.
Explicación: Las líneas segunda, cuarta y sexta son los bucles principales. Los detalles son una manipulación fea de la pila, pero a grandes rasgos, primero, la segunda línea llena la pila alternando entre un carácter de entrada y min ( i , n ), donde n es el límite de longitud e i es el índice del carácter en la entrada: para "abulón", 3, la pila se ve como
A continuación, la línea 4 pasa por la pila de la misma manera en reversa, para que el extremo derecho quede correctamente tapado:
Luego, la sexta línea toma cada par de caracteres y números e imprime el carácter tantas veces como el número.
fuente