No hemos tenido una pregunta de cadena por un tiempo (5 días para ser precisos), así que vamos por una.
Dada una cadena s
y un entero positivo n
, tome cada n
elemento de th s
, repítalo n
veces y vuelva a colocarlo s
.
Por ejemplo, si n = 3
y s = "Hello, World!"
, cada tercer personaje es Hl r!
. Luego repites cada personaje n
para producir HHHlll rrr!!!
. Luego reemplaza las letras originales con las versiones repetidas para producir el producto final deHHHellllo, Worrrld!!!
¡Debe realizar esta tarea en el código más corto posible en su idioma!
Reglas
- Este es un código de golf, por lo que gana el código más corto en bytes
n
se garantiza que es menor que la longituds
y mayor que 0- El primer carácter de
s
es de dónden
se toman los caracteres th, y siempre se repiten
veces s
solo consistirá en ASCII imprimible (el código apunta0x20 (space)
a0x7E (~)
)
Casos de prueba
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 una matriz de caracteres?s
" <- ¿es un requisito estricto (sobrescribir la cadena original) o está bien simplemente generar el resultado final?Respuestas:
Jalea , 3 bytes
La entrada se toma como s, n .
Pruébalo en línea!
Cómo funciona
fuente
E1 B8 A2 73 C3 97
Jalea ,
65 bytes-1 byte gracias a Nun con fugas (use la multiplicación de cuerdas de Python).
Un programa completo, que acepta dos argumentos de línea de comando, la cadena y el número, e imprime el resultado.
Pruébalo en línea!
¿Cómo?
fuente
x
olvidar×
; Gracias.C3 97 4A 6D C2 A5 C2 A6
JavaScript (ES6), 46 bytes
Toma entrada en la sintaxis de curry
(s)(n)
.Casos de prueba
Mostrar fragmento de código
fuente
Protón , 44 bytes
Pruébalo en línea!
fuente
C # (.NET Core) ,
8482 bytesPruébalo en línea!
fuente
i++
y cambiandon[i],i%m<1?m:1
an[i],i++%m<1?m:1
.n=>m=>...
05AB1E ,
87 bytes-1 byte gracias a @Emigna
Pruébalo en línea!
Explicación
fuente
ôʒć²×ì?
}
vy
es un foreach,ε
es otro. Por extraño que parezca,ε
no funciona.PowerShell , 51 bytes
Pruébalo en línea!
Toma la entrada como una
char
matriz$a
y el número$n
. Recorre$a
y cada iteración genera la letra actual$_
o la letra actual multiplicada por$n
, en base a un índice en un pseudoternario. El índice elige entre los dos en función del incremento$i
y luego el módulo$n
. Esas letras se-join
vuelven a unir y la cadena se deja en la tubería; La salida es implícita.fuente
Python 2 ,
5453 bytesEditar: guardado 1 byte gracias a @Rod
Pruébalo en línea!
fuente
x[i]
y[1,n][i%n<1]
ahorrar espacioAlice , 25 bytes
Pruébalo en línea!
Explicación
fuente
R ,
827675 bytesPruébalo en línea!
Una función; toma una cadena
s
y un número enteron
e imprime la versión repetida en stdout.Explicación:
R , 55 bytes
Pruébalo en línea!
Mismo algoritmo que el anterior, pero
S
tomado como una lista de caracteres individuales.fuente
Python 2 , 57 bytes
Pruébalo en línea!
fuente
enumerate
sería más corta?range(len())
al final sería más largoPython 2 , 53 bytes
Pruébalo en línea!
fuente
Japt , 8 bytes
¡Pruébalo en línea!
Explicación
Tengo que acreditar la idea de utilizar
ù
a @Shaggy respuesta 's aquí . No sé si alguna vez lo hubiera pensado yo mismo ...fuente
ë
, por caca y risitas, ¡pero fallé miserablemente!J, 17 bytes
(...) # ]
todo en parens crea la cadena para el verbo de "copia" integrado de J. Entonces, por ejemplo, si el argumento izquierdo es 3, crea la cadena3 1 1
repetida según sea necesario para igualar el número de caracteres en el argumento derecho]
, que contiene la cadena. Es decir,#
resuelve el problema directamente, suponiendo que podamos darle el argumento izquierdo correcto:4
debe4 1 1 1
repetirse, y así sucesivamente.#@]$[,1#~<:@[
, vemos que usa el verbo de la forma de J$
en el medio, ese es el verbo principal de esta frase ...$
is#@]
, que significa la longitud#
de la arg derecha]
.$
es[,1#~<:@[
, un tren de 5 verbos. El primer tren ejecutado es ...1#~<:@[
, lo que significa 1 copiado#~
(forma pasiva de copia) uno menos que<:
el argumento izquierdo[
. Este resultado se pasa a la bifurcación final:[, ...
es decir, toma el argumento izquierdo y agrega el resultado que acabamos de calcular, que es una cadena de1
s.Pruébalo en línea!
fuente
]#~[^0=(|i.@#)
por 14 bytesC # (.NET Core) , 61 + 18 = 79 bytes
Pruébalo en línea!
fuente
Perl 5,
37, 29 +1 (-p) bytes-8 bytes gracias al comentario de Tom.
Pruébalo en línea
fuente
$n=<>;
lugar delBEGIN
bloque y tenern
en la siguiente línea de entrada y reemplazar$-[0]
con,"@-"
ya que solo se evalúa el primer número en comparación. Además, si toma la entrada den
vía-i
, puede usarla en$^I
lugar de declararla y usarla$n
, pero dado que esto no es estándar, podría no volar ... :)6502 rutina de código de máquina , 50 bytes
Esta es una subrutina independiente de la posición que espera un puntero a la cadena de entrada (también conocida como C-string) en
$fb
/$fc
, un puntero al búfer de salida en$fd
/$fe
y la cuenta (n
) en$ff
. Utiliza una indexación simple, por lo que está limitado a una longitud de salida máxima de 255 caracteres (+ 0 byte) debido a la arquitectura de 8 bits.Explicación (desmontaje comentado):
Ejemplo de programa de código de máquina C64 usándolo :
Este es un programa en ensamblador de estilo ca65 para el C64 usando esta rutina (importada como
rep
):Demostración en línea
Uso:
sys49152,"[s]",[n]
por ej.sys49152,"Hello, World!",3
Importante: si el programa se cargó desde el disco (como en la demostración en línea), ¡emita
new
primero un comando! Esto es necesario porque cargar un programa de máquina destruye algunos punteros BÁSICOS C64.fuente
Java 8,
10076 bytes-24 bytes gracias a @ OliverGrégoire .
Explicación:
Pruébalo aquí
fuente
n->s->{int i,k=0;for(char c:s)for(i=k++%n<1?n:1;i-->0;)System.out.print(c);}
(con unchar[]
, en lugar deString
.)MATL ,
107 bytes-3 bytes gracias a Luis Mendo!
Pruébalo en línea!
Toma entrada como
n
y luegoS
como una cadena / matriz de caracteres.fuente
Haskell ,
5146 bytes¡Gracias @Laikoni por salvarme 5 bytes!
Pruébalo en línea!
Explicación / Ungolfed
El operador
c <$ [a..b]
reemplaza cada elemento de la lista[a,a+1...b]
porc
, por lo que es solo un campo de golfreplicate
:fuente
Carbón , 14 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Toma de entrada en el orden
n
,s
.fuente
V , 13 bytes
Pruébalo en línea!
Esta es una solución muy tonta.
òlhÀälÀlÀ<M-->l
debería funcionar, pero no puedo por la vida de entender por qué, sobre todo porque manualmente el hacerlhÀälÀlÀ<M-->l
repite un montón de veces que hace el trabajo.Hexdump:
Explicación:
fuente
'l' for right
... Supongo que eso es algo que queda Vim? De lo contrario ... ¿por qué ?l
está justo en vim. puede ser ortográficamente al revés, pero es geométricamente correcto:l
es la tecla de la letra más a la derecha de la fila central.Pyth , 12 bytes
Pruébalo aquí
fuente
Python 3 , 58 bytes
Trabajando en jugar golf.
Sé que ya hay otras respuestas de Python, pero pensé en publicar esta también porque tiene una puntuación bastante buena en comparación con las otras, a pesar de ser una función completa y no una lambda.
Toma datos como parámetros de función e imprime en
STDOUT
.Pruébalo en línea!
Por un byte menos (57), codifiqué un lambda, sin embargo, otros usuarios ya han publicado respuestas similares:
fuente
Brain-Flak (BrainHack) , 122 + 3 (
-A
) = 125 bytesEstoy seguro de que esto es demasiado largo, pero pasé bastante tiempo buscando y no pude encontrar ninguna mejora.
Pruébalo en línea!
fuente
05AB1E ,
1211 bytesPruébalo en línea!
Explicación
fuente
Mathematica, 71 bytes
Pruébalo en línea!
guardado -2 bytes al escuchar al usuario202729
fuente
Map
sobreCharacters
puede ser más corto.K (oK) ,
2319 bytesSolución:
Pruébalo en línea!
Ejemplos:
Explicación:
Notas:
fuente
Excel VBA, 71 bytes
Función de ventana inmediata anónima de VBE que toma la entrada del rango
[A1:B1]
y las salidas a la ventana inmediata de VBE.fuente