Dadas 2 entradas, una cadena y un número decimal, genera la cadena multiplicada por ese número.
El problema es que el número puede ser flotante o entero.
Debería mostrar el floor(n)
tiempo de cadena y luego las primeras floor((n-floor(n))*len(string))
letras nuevamente.
Otras notas:
- La entrada no siempre será flotante, puede ser un int. Entonces 1.5, 1 y 1.0 son todos posibles. Sin embargo, siempre estará en la base 10, y si desea una excepción, por favor comente.
- La entrada de cadena puede contener espacios en blanco, comillas y otros caracteres. Sin embargo, no hay líneas nuevas ni caracteres de control.
- No hay incorporados para la repetición directa de cadenas, incluso
'a'*5
se permite la multiplicación de cadenas como la pitón . Sin embargo, se permite la adición de cadenas .
Casos de prueba:
La coma y el espacio separan las entradas.
test case, 1 -> test case
case, 2.5 -> casecaseca
(will add more later), 0.3333 -> (will(space)
cats >= dogs, 0.5 -> cats >
Nota final:
Estoy viendo muchas respuestas que usan funciones de multiplicación o repetición de cadenas incorporadas. Esto no esta permitido. Sin embargo, la respuesta de @ VTC es válida, ya que no multiplica la cadena, solo la entrada flotante. Entonces, la regla definitiva es: si multiplica directamente la cadena, no puede hacerlo.
direct
secuencia de repetición (¿qué significa esto?). Pero en general, tienes razónjoin "", ("case") x 2
vs"case" x 2
, en Perl 6[~] "case" xx 2
vs lo mismo"case" x 2
Respuestas:
Jalea, 5 bytes
No utiliza una repetición incorporada. Pruébalo en línea!
Cómo funciona
fuente
Java 7, 89
toma char [] y float y sale a STDOUT. bucle básico.
fuente
Pyth
9 98Guardado 1 byte gracias a Pietu1998
Esto toma
floor(n * len(string))
letras de la cadena, usando indexación cíclica. Creo que esto siempre es equivalente a la fórmula dada.Banco de pruebas
fuente
s
.range
Es gracioso así.JavaScript (ES6), 50 bytes
Edite 2 bytes más para incluir la definición de la función
f
. 1 byte menos con la punta de @manatwork. Nota: usando~
tenemos más iteraciones de las necesarias, pero esto es código de golf e incluso recuentos de 1 bytePRUEBA
fuente
n>0
en el código vs.n>1
en el caso de prueba.~n
? (Realmente solo una pregunta. Intenté solo los casos de prueba dados)f
define en su solución? ¿No te estás perdiendof=
?Vitsy, 9 bytes
Espera que la palabra sea un argumento y que el número se multiplique por STDIN.
Pruébalo en línea!
fuente
Grab all string argument input.
y luegoParse STDIN.
otra vez?CJam, 10 bytes
La cadena se suministra en la primera línea de STDIN, el flotante en la segunda.
Pruébalo aquí.
Explicación
fuente
Python 2, 71 bytes
Pruébalo aquí!
Crea una lambda sin nombre que toma la cadena como primer argumento y el flotante como segundo. Devuelve la cadena repetida.
Esto podría ser 46 si se permitieran las repeticiones de cadenas integradas :(
fuente
Ruby,
4948 caracteresEjecución de muestra:
fuente
Perl 6 ,
46 4139 bytesPerl 6 tiene un operador de repetición de cadena
x
y un operador de repetición de listaxx
.Como las reglas no permiten la repetición de cadenas, la repetimos como si fuera una lista de un solo elemento. Luego, la lista se concatena y se devuelve una subcadena.
Uso:
fuente
substr ([~] $^a xx$^b+1),0,$a.comb*$b}
ahorra dos caracteresosascript, 173 bytes
Oh, mis días, esto es peor de lo que pensaba.
Devuelve el valor de la cadena, otra respuesta usando indexación cíclica. Espera entrada como
"string" "repetitions"
.fuente
Oh my days, this is worse than I thought.
Tan cierto, tan cierto.set x,y to a's items
?Haskell, 44 bytes
Ejemplo de uso:
"(will add more later)" # 0.3333
->"(will "
.Cómo funciona:
c
concatena infinitas copias de la cadenax
. Se comporta como el incorporadocycle
.sum[1|a<-s]
es una función de longitud personalizada que funciona con el sistema de tipo estricto de Haskell, ya que devuelve unDouble
(el incorporadolength
devuelve unInt
que no se puede multiplicarn
).#
tomafloor (n * length(s))
caracteres de la cadena cíclicas
.fuente
PHP 5,
96879 bytes guardados gracias a @manatwork
Respuesta en bucle bastante directa.
Sin golf
fuente
@
también:<?for($i=$z=0;$i++<floor(strlen($a=$argv[1])*$argv[2]);$z++)echo$a[$z]?:$a[$z=0];
error_reporting
Por lo tanto, preferimos basar nuestras soluciones en la configuración predeterminada y no preocuparnos por avisos y otros buenos hábitos. Por ejemplo, ignorando la inicialización de$z
y$i
.R, 59 bytes
Como una función sin nombre. Esto usa charToRaw para dividir la cadena en un vector de raws. Esto se llena en una matriz de longitud * l, convertida de nuevo a char y salida.
Iba a usar strsplit, pero terminó siendo más largo.
Prueba
fuente
Perl, 51 + 3 = 54 bytes
Se requiere:
-n
,-l
y-M5.010
|-E
:Explicación:
fuente
c (macro preprocesador), 71
No es muy complicado aquí. Solo necesito asegurarme
l*m
esté emitidoint
antes de compararj
.Pruébalo en línea.
fuente
Oracle SQL 11.2,
154152 bytesSin golf
Seguí el camino recursivo, con la selección de inicialización cuidando la parte decimal.
Guardado 2 bytes gracias a @MickyT
fuente
FLOOR(FLOOR((:2-FLOOR(:2))*LENGTH(:1)))
conMOD(:2,1)*LENGTH(:1)
LPAD
lugar deSUBSTR
En serio, 24 bytes
Pruébalo en línea!
Explicación:
fuente
Pyth, 9 bytes
Básicamente solo haciendo
fuente