Dados dois números inteiros positivos, A e B, ilustram seu múltiplo menos comum , produzindo duas linhas de traços ( -
) com comprimento LCM (A, B) após substituir todos os traços Ath na primeira linha e cada traço B na segunda linha com barras verticais ( |
)
Dessa forma, o final de cada linha será o único lugar |
da linha de dois .
Por exemplo, se A = 6 e B = 4, LCM (6, 4) = 12, então:
two lines of 12 dashes: ------------ ------------ replace every 6th dash in the first line with a vertical bar: -----|-----| ------------ replace every 4th dash in the second line with a vertical bar: -----|-----| ---|---|---|
Assim, o resultado final seria
-----|-----| ---|---|---|
A ordem dos números de entrada deve corresponder à ordem das linhas.
O código mais curto em bytes vence.
Casos de teste
A B
line for A
line for B
1 1
|
|
1 2
||
-|
2 1
-|
||
2 2
-|
-|
6 4
-----|-----|
---|---|---|
4 6
---|---|---|
-----|-----|
2 3
-|-|-|
--|--|
3 2
--|--|
-|-|-|
3 6
--|--|
-----|
2 5
-|-|-|-|-|
----|----|
4 3
---|---|---|
--|--|--|--|
10 10
---------|
---------|
10 5
---------|
----|----|
10 6
---------|---------|---------|
-----|-----|-----|-----|-----|
24 8
-----------------------|
-------|-------|-------|
7 8
------|------|------|------|------|------|------|------|
-------|-------|-------|-------|-------|-------|-------|
6 8
-----|-----|-----|-----|
-------|-------|-------|
13 11
------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|
----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|
Respostas:
Python 3, 80 bytes
Economizou 1 byte graças a Halvard Hummel e 1 byte graças a Jonathan Allan.
Teste online!
Teste online! (82 bytes - resposta inicial)
Este é o melhor que eu poderia fazer no Python 2 (81 bytes). Parece que não posso comentar sobre essa resposta, apenas postarei aqui:
Teste online!
Primeira tentativa aqui, provavelmente abaixo do ideal!
fonte
Haskell , 57 bytes
Experimente online!
fonte
0^0=1
truque antes - inteligenteGelatina , 12 bytes
Experimente online!
fonte
MATL ,
1615 bytesEntrada é um vetor de coluna com os dois números. Experimente online!
Como bônus, a entrada pode conter mais de dois números . Experimente online!
Explicação
fonte
He
?[1; 1]
, devido ao modo como o MATL (AB) lida com a forma da matriz com a indexação. (Alternativamente, a transposta poderia ser substituída porHe
, no final, o qual é por isso que foi inicialmente ali)R ,
109105 bytesExperimente online!
Função anônima. Calcula
l=lcm(a,b)
, em seguida, gera um intervalo0
dal
pora
, em seguida, a partirl
de2*l
porb
, definindo os índices a|
e imprimir como uma matriz coml
colunas.fonte
Python 2 , 66 bytes
Experimente online!
fonte
C, 72 bytes
fonte
Casca , 12 bytes
Experimente online!
Sim, há um lcm embutido no Husk. Não, eu não preciso disso.
Bônus: funciona com qualquer número de valores de entrada
Explicação
fonte
Mathematica, 63 bytes
Experimente online!
e outra versão que user202729 realmente, realmente, realmente quer ver postada
Mathematica, 59 bytes
este usa caráter especial
\[Divides]
∣
fonte
\[Divides]
vez deMod
representar a divisibilidade, o que economiza 4 bytes. O Mathio TIO também não deve imprimir o arquivo{Null, Null}
.05AB1E , 13 bytes
Usa a codificação 05AB1E . Experimente online!
fonte
.¿Lε²¹‚%_„-|è}øJ»
.APL (Dyalog) , 22 bytes
Assume
⎕IO←0
. Toma A, B como argumento correto. Bônus: lida com a lista de entrada de qualquer tamanho!Experimente online!
{
…}
Lambda anônima onde⍵
representa o argumento certo'|-'[
…]
Indexe a string com:∧/
LCM na entrada⍳
primeiro que muitos ntegers (0 a N-1)⍵∘.|
tabela restante da divisão com a entrada verticalmente e horizontalmente×
signum⌽
Virar horizontalmentefonte
⎕IO←0
, pois esse é o padrão lá.Oitava ,
4638 bytes-8 bytes graças a várias sugestões de Luis Mendo
Experimente online!
fonte
JavaScript (ES6), 69 bytes
Executa recursivamente até que
A
seja divisível por ambosa
eb
- produzindo um traço ou tubo com base naa
divisibilidade deA
.A função então se chama, trocando
a
eb
.A
S
variável impede a função de se chamar infinitamente.Casos de teste:
Mostrar snippet de código
Respostas anteriores:
JavaScript (ES8), 91 bytes
Usa os algoritmos:
Recursivamente se chama apenas uma vez para emitir a segunda linha.
Casos de teste:
Mostrar snippet de código
JavaScript (ES6), 93 bytes
O mesmo algoritmo de antes, usando em
repeat
vez depadStart
.fonte
padStart
era ES8?f=(a,b,A=1)=>(A%a?'-':'|')+(A%a|A%b?f(a,b,A+1):a<0?'':`\n`+f(-b,a))
Scala, 98 bytes
Experimente online
fonte
*(a-1)
ser golfed de*~-a
e*(b-1)
para*~-b
? Além disso, você poderia adicionar um link TIO com código de teste? (Oh, e que avatar não parece muito cúbico para mim; p.)*~-a
é grande, mas infelizmente Scala requer mais suportes:*(~(-a))
deixar claro que as concatenações*~-
,*~
,~-
não são nomes de função extravagantes. Eu adicionei um link TIO.~-
podem ser nomes de funções no Scala. Lembro-me de alguém mencionando isso antes há muito tempo. Isso é lamentável em relação ao golfe. Mais uma vez bem-vindo e boa primeira resposta.Java (OpenJDK 8) , 103 bytes
Experimente online!
110 bytes, n valores de entrada
Experimente online!
fonte
Java 8,
125118117 bytes-7 bytes graças a @Nevay .
-1 byte, começando com uma nova linha à direita (
A="",B="\n"
substituída porA="\n",B=A
).Explicação:
Experimente aqui.
fonte
a->b->{String A="",B="\n",k="|";for(int i=0;!A.endsWith(k)|!B.endsWith(k);B+=i%b<1?k:"-")A+=++i%a<1?k:"-";return A+B;}
!A.endsWith(t)|!B.endsWith(t)
quando estava procurando uma maneira curta de verificar se as duas terminavam com|
.. E iniciar B com uma nova linha em vez de colocá-la entre elas no retorno também é inteligente.Python 2 ,
9688 bytesEdit: Salvo 4 bytes graças a @Leaky Nun
Editar: salvou 4 bytes graças a @Rod
Experimente online!
fonte
[...]
por'\n'.join(...)
para corrigir.Python 2 , 89 bytes
Não é a entrada mais curta do Python 2, mas uma abordagem diferente da
gcd
que ainda pode ser jogável.Experimente online!
fonte
Haskell ,
6660 bytesExperimente online!
Mesmo comprimento:
Solução antiga:
fonte
'\n':
.C (gcc) ,
12199939289 bytesIsso deve ser muito mais curto, hmmmm ....
Experimente online!
fonte
J , 20 bytes
Experimente online!
fonte
SOGL V0.12 ,
1916 bytesExperimente aqui!
Explicação:
fonte
Empilhados ,
4238 bytesExperimente online!
Entrada na forma de um par de números. Todos os casos de teste juntos parecem com edifícios.
Explicação
Isso primeiro leva
lcm
os dois números de entradaz
. Então, para cada númerok
, geramosz / k
cadeias-
de comprimentok - 1
, adicionando|
ao final de cada uma e produzindo cada uma.Tentativas anteriores contadas
42 bytes:
[:...lcm@z:[:z\/\#-'-'*\rep'|'+''#`out]"!]
Outras tentativas
43 bytes:
[:...lcm@z:[:z\/\#-'-'*\rep'|'#`'|'+out]"!]
45 bytes:
['@lcm'!#~@z,[:z\/\#-'-'*\rep'|'#`'|'+out]"!]
45 bytes:
[:...lcm@x[x'-'*\#<$betailmap'|'#`'|'+out]"!]
53 bytes:
[:...lcm'-'*@z#-'.'*'('\+')'+'.'+[z\'$1|'repl out]"!]
54 bytes:
[:...lcm@x{!x'-'*('('n#-'.'*').')''#`'$1|'repl out}"!]
fonte
JavaScript (ES6), 89
Avaliando o LCM com vícios repetidos.
Menos golfe
Teste
fonte
VBA (Excel),
144142 bytes-2 bytes. obrigado Sir Washington Guedes.
fonte
Ruby ,
6457 bytes-7 bytes graças a G B.
Experimente online!
fonte
Carvão ,
323029 bytesExperimente online! Link é a versão detalhada do código. Editar: salvou 1 byte graças a @ ASCII-only.
fonte
Planilhas Google, 77 bytes
Fórmula de planilha anônima que leva a entrada do intervalo
A1:B1
e as saídas para a célula chamadora-4 bytes graças a @EngineerToast
fonte
LCM(A1,B1)
criar um curto - circuitoLCM(1:1)
para salvar apenas 4 bytes. Eu acho que é razoável presumir uma planilha inicial em branco e especificar onde estão as entradas e a fórmula.Excel VBA, 79 bytes
Função de janela imediata VBE anônima que recebe entrada do intervalo
[A1:B1]
e exibe uma visualização de seu LCM na janela imediata VBE.Esta é uma porta da minha resposta do Planilhas Google .
fonte
Japonês , 12 bytes
Intérprete Japt
Entradas como uma matriz de números. Saídas como uma matriz de seqüências de caracteres. O sinalizador -R melhora um pouco a aparência da saída, mas não é necessário para a lógica.
Explicação:
Agradecimentos extras a Shaggy por encontrar alguns bytes para salvar.
fonte