Étant donné deux entiers positifs, A et B, illustrent leur plus petit multiple commun en générant deux lignes de tirets ( -
) de longueur LCM (A, B) après avoir remplacé chaque tiret Ath de la première ligne et chaque tiret de la deuxième ligne par des barres verticales ( |
)
De cette façon, la fin de chaque ligne sera le seul endroit où deux |
sont alignés.
Par exemple, si A = 6 et B = 4, LCM (6, 4) = 12, ainsi:
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: -----|-----| ---|---|---|
Ainsi, le résultat final serait
-----|-----| ---|---|---|
L'ordre des nombres entrés doit correspondre à l'ordre des lignes.
Le code le plus court en octets gagne.
Testcases
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
------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|------------|
----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|----------|
Réponses:
Python 3, 80 octets
Enregistré 1 octet grâce à Halvard Hummel et 1 octet à Jonathan Allan.
Testez-le en ligne!
Testez-le en ligne! (82 octets - réponse initiale)
C'est le mieux que j'ai pu faire dans Python 2 (81 octets). Il semble que je ne puisse pas commenter cette réponse, je vais simplement poster ceci ici:
Testez-le en ligne!
Première tentative ici, probablement sous-optimale!
la source
Haskell , 57 octets
Essayez-le en ligne!
la source
0^0=1
tour auparavant - malinGelée , 12 octets
Essayez-le en ligne!
la source
MATL ,
1615 octetsL'entrée est un vecteur de colonne avec les deux nombres. Essayez-le en ligne!
En prime, l'entrée peut contenir plus de deux nombres. . Essayez-le en ligne!
Explication
la source
He
?[1; 1]
, à cause de la façon dont MATL (AB) gère la forme d'un tableau avec indexation. (Alternativement, la transposition pourrait être remplacée parHe
la fin, c'est pourquoi elle était initialement là)R ,
109105 octetsEssayez-le en ligne!
Fonction anonyme. Calcule
l=lcm(a,b)
, génère ensuite un intervalle de0
àl
para
, puis à partirl
de2*l
parb
, l' établissement des indices à|
et l' impression en tant que matrice avec desl
colonnes.la source
Python 2 , 66 octets
Essayez-le en ligne!
la source
C, 72 octets
la source
Husk , 12 octets
Essayez-le en ligne!
Oui, il y a un lcm intégré dans Husk. Non, je n'en ai pas besoin
Bonus: fonctionne avec n'importe quel nombre de valeurs d'entrée
Explication
la source
Mathematica, 63 octets
Essayez-le en ligne!
et une autre version qui user202729 veut vraiment voir vraiment posté
Mathematica, 59 octets
celui-ci utilise un caractère spécial
\[Divides]
∣
la source
\[Divides]
place d'Mod
opérateur pour représenter la divisibilité, ce qui économise 4 octets. Mathics TIO ne doit pas non plus imprimer le fichier{Null, Null}
.05AB1E , 13 octets
Utilise le codage 05AB1E . Essayez-le en ligne!
la source
.¿Lε²¹‚%_„-|è}øJ»
.APL (Dyalog) , 22 octets
Suppose
⎕IO←0
. Prend A, B comme bon argument. Prime: gère la liste de saisie de n'importe quelle longueur!Essayez-le en ligne!
{
…}
Lambda anonyme où⍵
représente le bon argument'|-'[
…]
Indexez la chaîne avec:∧/
LCM à travers l'entrée⍳
d' abord que beaucoup ɩ ntegers (0 à N-1)⍵∘.|
division reste table avec l'entrée verticalement et horizontalement×
signum⌽
retourner horizontalementla source
⎕IO←0
, car il s'agit du code par défaut.Octave ,
4638 octets-8 octets grâce aux suggestions de Luis Mendo
Essayez-le en ligne!
la source
JavaScript (ES6), 69 octets
Récursivement s'exécute jusqu'à ce qu'il
A
soit divisible par les deuxa
etb
- produisant un tiret ou un tuyau en fonction dea
la divisibilité deA
.La fonction s’appelle alors elle-même, swapping
a
etb
.La
S
variable empêche la fonction de s’appeler infiniment.Cas de test:
Afficher l'extrait de code
Réponses précédentes:
JavaScript (ES8), 91 octets
Utilise les algorithmes:
S'appelle de manière récursive une seule fois pour sortir la deuxième ligne.
Cas de test:
Afficher l'extrait de code
JavaScript (ES6), 93 octets
Même algorithme que précédemment, en utilisant
repeat
au lieu depadStart
.la source
padStart
être 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 octets
Essayez-le en ligne
la source
*(a-1)
être à joué au golf*~-a
et*(b-1)
à*~-b
? Aussi, pourriez-vous peut-être ajouter un lien TIO avec le code de test? (Oh, et cet avatar ne me semble pas très cubique.; P)*~-a
est grande, mais malheureusement Scala nécessite plus de crochets:*(~(-a))
pour préciser que les concaténations*~-
,*~
,~-
ne sont pas des noms de fonction de fantaisie. J'ai ajouté un lien TIO.~-
peuvent être des noms de fonctions dans Scala. Je me souviens de quelqu'un qui a mentionné cela il y a longtemps. C'est dommage en ce qui concerne le golf. Encore une fois, bienvenue et bonne première réponse.Java (OpenJDK 8) , 103 octets
Essayez-le en ligne!
110 octets, n valeurs d'entrée
Essayez-le en ligne!
la source
Java 8,
125118117 octets-7 octets grâce à @Nevay .
-1 octet en commençant par un retour à la ligne (
A="",B="\n"
remplacée parA="\n",B=A
).Explication:
Essayez ici.
la source
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)
lorsque je cherchais un moyen court de vérifier si les deux se terminaient par|
.. Et commencer par B avec une nouvelle ligne au lieu de la placer entre eux au retour est également intelligent.Python 2 ,
9688 octetsEdit: 4 octets sauvegardés grâce à @Leaky Nun
Edit: 4 octets sauvegardés grâce à @Rod
Essayez-le en ligne!
la source
[...]
par'\n'.join(...)
pour réparer.Python 2 , 89 octets
Pas l’entrée Python 2 la plus courte, mais une approche différente de celle
gcd
qui peut encore être jouable au golf.Essayez-le en ligne!
la source
Haskell ,
6660 octetsEssayez-le en ligne!
Même longueur:
Ancienne solution:
la source
'\n':
.C (gcc) ,
12199939289 octetsCela devrait être beaucoup plus court, hmmmm ....
Essayez-le en ligne!
la source
J , 20 octets
Essayez-le en ligne!
la source
SOGL V0.12 ,
1916 octetsEssayez-le ici!
Explication:
la source
Empilés ,
4238 octetsEssayez-le en ligne!
Entrez sous la forme d'une paire de nombres. Tous les tests mis en place ressemblent un peu à des bâtiments.
Explication
Cette première prend en compte le nombre
lcm
de deux entréesz
. Ensuite, pour chaque numérok
, nous généronsz / k
chaînes-
de longueurk - 1
, en ajoutant|
à la fin de chaque nombre et en sortie.Tentatives précédentes comptées
42 octets:
[:...lcm@z:[:z\/\#-'-'*\rep'|'+''#`out]"!]
Autres tentatives
43 octets:
[:...lcm@z:[:z\/\#-'-'*\rep'|'#`'|'+out]"!]
45 octets:
['@lcm'!#~@z,[:z\/\#-'-'*\rep'|'#`'|'+out]"!]
45 octets:
[:...lcm@x[x'-'*\#<$betailmap'|'#`'|'+out]"!]
53 octets:
[:...lcm'-'*@z#-'.'*'('\+')'+'.'+[z\'$1|'repl out]"!]
54 octets:
[:...lcm@x{!x'-'*('('n#-'.'*').')''#`'$1|'repl out}"!]
la source
JavaScript (ES6), 89
Évaluer le LCM avec des addictions répétées.
Moins joué au golf
Tester
la source
VBA (Excel),
144142 octets-2 octets. merci Sir Washington Guedes.
la source
Ruby ,
6457 octets-7 octets grâce à G B.
Essayez-le en ligne!
la source
Charbon de bois ,
323029 octetsEssayez-le en ligne! Le lien est vers la version verbeuse du code. Edit: 1 octet enregistré grâce à @ ASCII uniquement.
la source
Feuilles de Google, 77 octets
Formule anonyme de feuille de calcul qui prend des entrées
A1:B1
et des sorties dans la cellule appelante-4 octets grâce à @EngineerToast
la source
LCM(A1,B1)
justeLCM(1:1)
pour économiser 4 octets. Je pense qu'il est raisonnable de supposer une feuille de départ vierge et de spécifier où se trouvent les entrées et la formule.Excel VBA, 79 octets
Fonction de fenêtre immédiate VBE anonyme qui prend une entrée de la plage
[A1:B1]
et affiche une visualisation de leur LCM dans la fenêtre immédiate VBE.Ceci est un portage de ma réponse Google Sheets .
la source
Japt , 12 octets
Japt Interpreter
Entrées sous forme de tableau de nombres. Sort en tant que tableau de chaînes. L'indicateur -R améliore légèrement l'apparence de la sortie, mais n'est pas nécessaire pour la logique.
Explication:
Un merci supplémentaire à Shaggy pour avoir trouvé quelques octets à sauvegarder.
la source