Dada una cadena s
y un número entero positivo N
, gradualmente duplique cada carácter más y más hasta que se N
duplique, y luego manténgase en los N
duplicados hasta que los N
caracteres se alejen del final, luego vuelva a bajar.
Por ejemplo, dado abalone
y 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 2N
y solo tiene caracteres de a
a 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
do
bloque! Guarde un byte colocando el paréntesislength(s)
.Haskell (Lambdabot), 74 bytes
Pruébalo en línea!
fuente
>>=id
J, 24 bytes
El bit en parens -
(<.&n<./(|.,:[)>:i.#s)
crea la1 2 ... n n n ... 2 1
matriz 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,x
pero 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
U
y enteroV
.Mapa
U
y 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