Entradas:
Dos dígitos individuales (llamémoslos m
y n
) y dos caracteres (llamémoslos a
y b
) en el formato de entrada de su elección.
Salida:
Para el tutorial, finja m=2, n=5, a='a', b='b'
.
Su salida será una cadena construida a partir de sus cuatro entradas. Llamemos a la cadena result
, con valor ""
. Primero, concatene a
en result
m
tiempos, así que concatene a
en result
2
tiempos. result
Ahora es igual aa
. En segundo lugar, concatene b
en result
m
tiempos, así que concatene b
en result
2
tiempos. result
Ahora es igual aabb
. Por último, si el resultado ya es más largo que n
, truncar result
para que tenga longitud n
. De lo contrario, continúe alternando con m
carreras de longitud de a
y b
hasta que result
tenga longitud n
. El final result
es aabba
, que tiene longitud 5
.
Casos de prueba:
Input: m = 2, n = 4, a = A, b = B
Output: AABB
Input: m = 3, n = 8, a = A, b = B
Output: AAABBBAA
Input: m = 4, n = 3, a = A, b = B
Output: AAA
Input: m = 2, n = 10, a = A, b = B
Output: AABBAABBAA
Como todos saben, uno menor gobernará el mundo, por lo que los programas más pequeños, en bytes, ¡ganan! :)
fuente
m=2,n=10,a=A,b=B
Respuestas:
Python , 32 bytes
Pruébalo en línea!
fuente
f=
de -2 bytes.f=
en la sección de encabezado de TIO, por lo que no necesita eliminarlo manualmente. TIO(a*m+b*m)
->(a+b)*m
: esto no funciona.MATL , 5 bytes
Las entradas son una cadena con los dos caracteres, luego
m
, luegon
.Pruébalo en línea!
Explicación
fuente
Haskell,
4440 bytesPruébalo en línea!
fuente
Ruby, 29 caracteres
Ejecución de muestra:
Pruébalo en línea!
fuente
Japt , 10 bytes
Primero intente usar un lenguaje de golf. Pruébalo en línea!
Explicación
fuente
VîWpU +XpU
, pero ambos hacen lo mismo.Vî
Es perfecto para este desafío.05AB1E , 5 bytes
Pruébalo en línea!
Explicación
fuente
Jalea ,
64 bytesPruébalo en línea!
Gracias a Jonathan Allan por un mejor formato de entrada (-2).
fuente
V , 13 bytes
Pruébalo en línea!
a
yb
se toman en líneas separadas en la entrada,m
yn
se toman como argumento, invertidos (asín
es el primer argumento ym
es el segundo)Explicación
fuente
Haskell ,
363529 bytesOtra solución más de Haskell (espera los caracteres dados como una lista):
Pruébalo en línea!
Gracias @Laikoni por -1 byte.
fuente
(m#n)a b=
.R ,
4139 bytesUna función anónima; imprime el resultado en stdout. Toma los personajes como un vector
d=c(a,b)
.gl
¡genera factores (enteros) de (en este caso)2
niveles de longitud de ejecuciónm
con longitud totaln
!cat
los concatena y los imprime como una cadena.Pruébalo en línea!
fuente
function(d,m,n)rep(d,e=m,l=n)
sería una presentación válida.rep
dará como resultado un vector de caracteres en lugar de una sola cadenaJavascript, 55 bytes
Fragmento de código de ejemplo:
fuente
Javascript, 53 bytes
fuente
Casco , 3 bytes
Puerto directo de mi respuesta de Haskell, excepto que el orden de los argumentos es diferente:
Pruébalo en línea!
fuente
Haskell ,
4843 bytesPruébalo en línea!
fuente
QBIC ,
3727 bytesExplicación
Intento previo:
fuente
PHP> = 7.1, 77 bytes
PHP Sandbox en línea
fuente
Java (OpenJDK 8) , 75 bytes
Pruébalo en línea!
fuente
Cubix ,
6358 bytesPruébalo en línea!
mira al intérprete
Toma datos como
ab*m*n
donde el*
puede haber cualquier carácter sin dígitos.Versión de cubo:
i|is
: lea los caracteres y cámbielos (tambiéna
está en la parte superior)I:q
: leerm
, duplicar y presionar hacia abajo (la pila está ahoram,b,a,m
))
: decremento?
: gire a la derecha si es positivo, vaya derecho si es cero (duplicadosa
)s:rur(/w
: intercambiar, dup, moverm-i
a la parte superior de la pila, disminuirm-i
B
: pila inversa (que ahora tienem
copias dea
:a... b m
)n
: negarm
(para que podamos usar?
para girar a la izquierda))
: incremento?
: siga recto si es cero, gire a la izquierda si es negativob
)s:r\/rw)\
básicamente lo mismo que la rama positiva pero con incrementos y giros a la izquierda.>v;
: abre la0
pila (parecea...b...
)/B
: invertir la pilaI
: leern
s
: intercambiar bucle de impresión:oq
: imprimir y empujar al fondo de la pila ahora se ve así:ab...a...n
(
decrementon
?
: gire a la derecha si es positivo, vaya derecho si es cero/su
intercambie la parte superior de la pila y continúe el ciclo/
refleja hacia abajo y el código evaluado esIru@
;@
termina el programafuente
Carbón de leña , 10 bytes
Pruébalo en línea! El enlace es a una versión detallada del código e incluye el cuarto ejemplo. (Molesto, el deverbosifer no eliminará el separador si agrego uno antes del último
InputNumber()
).fuente
Mathematica, 61 bytes
entrada
fuente
Mathematica, 44 bytes
Explicación
es el carácter de uso privado de tres bytesU+F3C7
, que representa el\[Transpose]
operador postfix en Mathematica. No hay un enlace TIO porque Mathics no es compatible
,\[Transpose]
tiene una prioridad de operador incorrecta, el segundo argumentoTable
debe ser una lista y, lo más importante,StringPadRight
no está implementado.fuente
APL (Dyalog) , 5 bytes
Pruébalo en línea!
Toma los dos caracteres en una cadena como la primera entrada, seguido de
m
y luegon
.Explicación
Sea la entrada de ejemplo
'ab'
,2
,10
.fuente
Pyth , 13 bytes
Pruébalo en línea!
Explicación
fuente
k, 10 bytes
Pruébalo en línea!
fuente
Chip , 588 bytes
Pruébalo en línea!
Toma la entrada como una cadena de 4 caracteres. Los dos primeros son los personajes a y b , seguido por el valor de byte m , y luego el valor de byte n . Por ejemplo, el TIO incluye entrada
ab<tab>2
, esto corresponde a 'a', 'b', 9, 50. (Dado que los códigos para<tab>
y2
son 9 y 50.¿Cómo?
Esta respuesta es un poco gigantesca, pero aquí están los aspectos más destacados:
El bloque superior izquierda, con la minúscula
a
-h
, es el mecanismo de almacenamiento para los caracteres a y b , una línea por bit. En su parte inferior, con elv~v
ymz
es el mecanismo de conmutación, para intercambiar entre los dos.En el medio hay una columna con un montón de
~#M
's. Esto se lee en m almacena su negativo. El gran triángulo a la derecha es solo cables para llevar este valor al acumulador superior.El bloque superior derecho es el acumulador para m . Incrementa cada ciclo (comenzando desde -m ) hasta llegar a cero. Cuando esto sucede, el carácter de salida se intercambia y el recuento se reinicia desde -m .
Mientras tanto, está el bloque inferior, que es el n acumulador. Como n solo se lee una vez, no necesitamos un banco de memoria (
M
ym
) para almacenar este valor. Simplemente lo negamos y comenzamos a contar. Cuando este valor llega a cero, todo el shebang simplemente termina.Todo lo demás es retrasos (
Z
yz
), cableado (-
,|
, ...), y otra miscelánea.fuente