Entradas:
Dois únicos dígitos (chamá-los de deixar m
e n
) e dois caracteres (vamos chamá-los a
e b
) no seu formato de entrada de escolha.
Resultado:
Para o passo a passo, finja m=2, n=5, a='a', b='b'
.
Sua saída será uma string criada a partir de suas quatro entradas. Vamos chamar a string result
, com valor ""
. Primeiro, concatene a
nos result
m
horários, portanto concatene a
nos result
2
horários. result
agora é igual aa
. Segundo, concatene b
nos result
m
horários, portanto concatene b
nos result
2
horários. result
agora é igual aabb
. Por fim, se o resultado já for maior que n
, trunque result
para que ele tenha comprimento n
. Caso contrário, continue alternando com m
trechos de comprimento de a
e b
até que ele result
tenha comprimento n
. A final result
é aabba
, que tem duração 5
.
Casos de teste:
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 sabem, um menor governará o mundo, e os menores programas, em bytes, vencem! :)
fonte
m=2,n=10,a=A,b=B
Respostas:
Python , 32 bytes
Experimente online!
fonte
f=
bytes de -2.f=
na seção de cabeçalho do TIO, para não precisar removê-lo manualmente. TIO(a*m+b*m)
->(a+b)*m
: isso não funciona.MATL , 5 bytes
Entradas são uma sequência com os dois caracteres, então
m
, entãon
.Experimente online!
Explicação
fonte
Haskell,
4440 bytesExperimente online!
fonte
Ruby, 29 caracteres
Exemplo de execução:
Experimente online!
fonte
Japonês , 10 bytes
Primeiro tente usar uma linguagem de golfe. Experimente online!
Explicação
fonte
VîWpU +XpU
também, mas ambos fazem a mesma coisa.Vî
é perfeito para esse desafio.05AB1E , 5 bytes
Experimente online!
Explicação
fonte
Geléia ,
64 bytesExperimente online!
Agradecimentos a Jonathan Allan pelo melhor formato de entrada (-2).
fonte
V , 13 bytes
Experimente online!
a
eb
são tomados em linhas separadas na entradam
en
tomados como argumento, invertidos (assimn
como o primeiro argumento em
o segundo)Explicação
fonte
Haskell ,
363529 bytesAinda outra solução Haskell (espera os caracteres dados como uma lista):
Experimente online!
Obrigado @Laikoni por -1 byte.
fonte
(m#n)a b=
.R ,
4139 bytesUma função anônima; imprime o resultado em stdout. Toma os caracteres como um vetor
d=c(a,b)
.gl
gera fatores (inteiros) de (neste caso)2
níveis de duração de execuçãom
com duração totaln
!cat
concatena e os imprime como uma sequência.Experimente online!
fonte
function(d,m,n)rep(d,e=m,l=n)
que seria uma apresentação válida.rep
irá resultar em um vetor de caracteres em vez de uma única cordaJavascript, 55 bytes
Exemplo de trecho de código:
fonte
Javascript, 53 bytes
fonte
Casca , 3 bytes
Porta direta da minha resposta Haskell, exceto que a ordem dos argumentos é diferente:
Experimente online!
fonte
Haskell ,
4843 bytesExperimente online!
fonte
QBIC ,
3727 bytesExplicação
Tentativa anterior:
fonte
PHP> = 7.1, 77 bytes
Sandbox do PHP Online
fonte
Java (OpenJDK 8) , 75 bytes
Experimente online!
fonte
Cubix ,
6358 bytesExperimente online!
assista ao intérprete
Toma entrada como
ab*m*n
onde*
pode ser qualquer caractere que não seja um dígito.Versão do cubo:
i|is
: leia os caracteres e troque-os (assima
está no topo)I:q
: leiam
, duplique e empurre para baixo (a pilha está agoram,b,a,m
))
: decrement?
: vire à direita se positivo, siga em frente se zero (duplicatasa
)s:rur(/w
: swap, dup, vám-i
para o topo da pilha, diminuam-i
B
: Pilha inversa (que agora temm
cópias dea
:a... b m
)n
: negarm
(para que possamos usar?
para virar à esquerda))
: incremento?
: siga em frente se for zero, vire à esquerda se for negativob
)s:r\/rw)\
basicamente o mesmo que o ramo positivo, mas com incrementos e curvas à esquerda.>v;
:0
retire a pilha (parecea...b...
)/B
: inverter a pilhaI
: lern
s
: troca de loop de impressão:oq
: imprima e empurre para o final da pilha agora se parece com:ab...a...n
(
diminuirn
?
: vire à direita se positivo, siga em frente se zero/su
::: troque a parte superior da pilha e continue o loop/
reflete para baixo e o código avaliado éIru@
;@
finaliza o programa.fonte
Carvão , 10 bytes
Experimente online! Link é uma versão detalhada do código e inclui o quarto exemplo. (Irritantemente, o deverbosifer não removerá o separador se eu adicionar um antes do último
InputNumber()
.)fonte
Mathematica, 61 bytes
entrada
fonte
Mathematica, 44 bytes
Explicação
é o caractere de uso privado de três bytesU+F3C7
, representando o\[Transpose]
operador postfix no Mathematica. Nenhum link TIO porque o Mathics não suporta
,\[Transpose]
tem a precedência errada do operador, o segundo argumento paraTable
é necessário para ser uma lista e, o mais importante,StringPadRight
não é implementado.fonte
APL (Dyalog) , 5 bytes
Experimente online!
Leva os dois caracteres em uma sequência como a primeira entrada, seguida por
m
e depoisn
.Explicação
Deixe a entrada exemplo ser
'ab'
,2
,10
.fonte
Pitão , 13 bytes
Experimente online!
Explicação
fonte
k, 10 bytes
Experimente online!
fonte
Chip , 588 bytes
Experimente online!
Recebe a entrada como uma sequência de 4 caracteres. Os dois primeiros são os caracteres a e b , seguindo-se o valor de byte m , e, em seguida, o valor do byte n . Por exemplo, o TIO inclui entrada
ab<tab>2
, isso corresponde a 'a', 'b', 9, 50. (Como os códigos para<tab>
e2
são 9 e 50.Quão?
Esta resposta é um pouco gigante, mas aqui estão os destaques:
O bloco de canto superior esquerdo, com o minúsculas
a
-h
, é o mecanismo de armazenamento para os caracteres de um e b , uma linha por bit. Na parte inferior, comv~v
emz
é o mecanismo de comutação, para alternar entre os dois.No meio é uma coluna com um monte de
~#M
's. Isto lê em m e armazena a sua negativa. O grande triângulo à direita são apenas fios para trazer esse valor para o acumulador superior.O bloco superior direito é o acumulador para m . Incrementa cada ciclo (a partir de -m ) até chegar a zero. Quando isso acontece, o caractere de saída é trocado e a contagem é reiniciada a partir de -m .
Enquanto isso, existe o bloco inferior, que é o n acumulador. Desde n é lido apenas uma vez, não precisamos de um banco de memória (
M
em
) para armazenar esse valor. Simplesmente negamos e começamos a contar. Quando esse valor chega a zero, o shebang inteiro é simplesmente encerrado.Todo o resto de bobagens são atrasos (
Z
ez
), a fiação (-
,|
...), e outra miscelânea.fonte