Le plus petit multiple commun d'un ensemble d'entiers positifs A
est le plus petit entier positif B
tel que, pour chaque k
entrée A
, il existe un entier positif n
tel que k*n = B
.
Étant donné au moins deux entiers positifs en entrée, sortez leur multiple le moins commun.
Règles
- Les prédéfinitions sont autorisées, mais si votre solution en utilise une, vous êtes encouragé à inclure une autre solution qui n'utilise pas les prédéfinitions GCD / LCM. Cependant, la solution alternative ne comptera pas du tout dans votre score, elle est donc entièrement facultative.
- Toutes les entrées et sorties seront dans la plage représentable en natif pour votre langue. Si votre langage est nativement capable d'entiers arbitrairement grands, alors votre solution doit fonctionner avec des entrées et des sorties arbitrairement grandes.
Cas de test
[7, 2] -> 14
[8, 1] -> 8
[6, 4, 8] -> 24
[8, 2, 1, 10] -> 40
[9, 6, 2, 1, 5] -> 90
[5, 5, 7, 1, 1] -> 35
[4, 13, 8, 8, 11, 1] -> 1144
[7, 2, 2, 11, 11, 8, 5] -> 3080
[1, 6, 10, 3, 4, 10, 7] -> 420
[5, 2, 9, 10, 3, 4, 4, 4, 7] -> 1260
[9, 7, 10, 9, 7, 8, 5, 10, 1] -> 2520
Réponses:
En fait,
121 octetLes suggestions de golf sont toujours les bienvenues, mais je ne sais pas comment améliorer le LCM brut intégré. Essayez-le en ligne!
Une version 12 octets sans le intégré. Les suggestions de golf sont les bienvenues. Essayez-le en ligne!
Ungolfing
la source
JavaScript (ES6), 36 octets
À partir de
1
c'est le premier nombre qui peut être divisé par tous.Afficher l'extrait de code
la source
some
renvoie vrai si au moins un élément du tableau satisfait la condition, non?05AB1E / 2sable , 2 octets
Essayez-le en ligne! en 05AB1E
ou 2sable
la source
Gelée , 3 octets
Réduit de LCM. Essayez-le en ligne! ou vérifier tous les cas de test .
Version alternative, 6 octets
Essayez-le en ligne! ou vérifier tous les cas de test .
Comment ça marche
la source
Python,
69655250 octets2 octets économisés grâce à Dennis!
Solution récursive assez simple, vous devrez augmenter la limite de récursivité pour que certains cas de test fonctionnent.
la source
any
prend un générateur; vous n'avez pas besoin des supports.A=lambda l,i=1:all(i%a<1for a in l)or-~A(l,i+1)
enregistre quelques octets supplémentaires.MATL , 7 octets
Pas intégré.
Essayez-le en ligne!
Explication
Prenons l'
[8, 2, 1, 10]
exemple de la saisie .EDIT (9 juin 2017):
YF
avec deux sorties a été modifié dans la version 20.1.0 : les nombres premiers non facteurs et leurs exposants (zéro) sont ignorés. Cela n'affecte pas le code ci-dessus, qui fonctionne sans nécessiter de modifications.la source
Julia (3 octets) [Travailler sur non intégré]
Comme l'a souligné Dennis, j'oublie toujours que Julia vectorise automatiquement les entrées.
Exemple:
la source
PowerShell v2 +,
7360 octetsPrend l'entrée
$a
, boucle vers le haut à partir de$i=1
avec$i++
, en fonction d'un conditionnel. La condition est($a|?{!($i%$_)}).count
étant-n
ote
qual à$a.count
. Cela signifie que la boucle se termine lorsque les éléments$a
qui sont des diviseurs de$i
sont égaux aux éléments de$a
. Ensuite, un solitaire$i
est laissé sur le pipeline et la sortie est implicite.Cas de test
la source
Mathematica, 3 octets
Usage:
la source
Cheddar, 33 octets
Rien de super nouveau.
Ungolfed
Fondamentalement, cela commence à un et continue d'augmenter jusqu'à ce qu'il trouve un LCM
la source
JavaScript (ES6),
6359 octetsTrouve récursivement le LCM des deux derniers éléments.
la source
a=>a.reduce((l,n)=>l*n/(g=(m,n)=>n?g(n,m%n):m)(l,n))
Dyalog APL, 2 octets
Réduit de LCM. Testez-le sur TryAPL .
la source
JavaScript (ES6), 52 octets
J'ai
reduce
autant répondu que possible à cette réponse, mais je ne vais évidemment pas me rapprocher de la simplicité de la réponse de @ Hedi.la source
Java 8,
755912189 octetsUtilise l'algorithme euclidien et le fait que LCM (A, B) = A * B / GCD (A, B)
Code:
Supprimer les sauts de ligne:
la source
n->{...}
je crois que cela devient valide Java 8.int g(int a,int b){return b<1?a:g(b,a%b);}
. LCM peut alors devenirint l(int[]a){int l=1;for(int n:a)l=l*n/g(l,n);return l;}
, pour un total de 99 octets.MATL , 3 octets
Cela utilise la fonction intégrée avec entrée de tableau.
Essayez-le en ligne!
la source
Brachylog , 17 octets
Essayez-le en ligne!
Explication
la source
Perl 6 , 10 octets
essentiellement le même que:
la source
J, 11 octets
Il existe une solution pour 3 octets utilisant le LCM intégré.
Explication
la source
CJam,
181716 octets1 octet économisé grâce à Martin Ender.
Incrémentation jusqu'à ce que le LCM soit trouvé.
Essayez-le en ligne
la source
Raquette 13 octets
lcm est une fonction intégrée dans Racket:
Essai:
Sortie:
la source
R, 36 octets (non intégré)
Prend l'entrée. Teste ensuite chaque entier positif en prenant le mod.
la source
cat
autour de votre dernieri
ec=T
c'est bien pour +4 plutôt que +5 pourcat()
.v=scan();while(any((F=F+1)%%v)){};F
aveccat()
ou avecec=T
40 ou 39 octets, respectivement. Et +1, très belle approche.Pyth, 9 octets
Un programme qui prend l'entrée d'une liste sur STDIN et imprime le résultat.
Essayez-le en ligne ou vérifiez tous les cas de test
Comment ça marche
la source
Haskell, 10 octets
Exemple d'utilisation:
foldl1 lcm [5,2,9,10,3,4,4,4,7]
->1260
.la source
C #, 50 + 18 = 68 octets
50 octets pour la définition de méthode, +18 octets pour l'importation LINQ.
À peu près la même chose que beaucoup d'autres réponses. Compte de manière récursive jusqu'à ce qu'il trouve le LCM. J'ai été un peu surpris que cela n'ait pas eu d'exception StackOverflowException, j'ai donc également une version non récursive qui n'est en fait que d'un octet de plus.
Ungolfed:
la source
Pip , 10 octets
Utilise la stratégie "essayer chaque numéro jusqu'à ce que l'on fonctionne". Essayez-le en ligne!
la source
PHP,
4274 octetssimple:
boucle
$f
de 1 vers le haut; si$f*$a
divise$b
sans reste, le LCM est trouvé.J'avais totalement dépassé le
at least
... voici le code pour un certain nombre de paramètres:Boucle
$f
de 1 vers le haut alors que la boucle intérieure n'a pas fonctionné sur $ argc.Boucle
$i
de2
à$argc-1
tandis que se$f*$argv[1]
divise$argv[$i]
sans reste.les deux boucles cassées: impression
$f*$argument 1
.la source
Prolog (SWI) , 46 octets
Essayez-le en ligne!
Une autre solution, 59 octets:
la source
Python 3, 83 octets
la source
Brachylog v2, 8 octets
Essayez-le en ligne!
C'est drôle à quel point cela correspond directement à la définition donnée dans le défi.
Une solution étrangement lente mais nettement plus courte:
Brachylog v2, 5 octets
Essayez-le en ligne!
Prend l'entrée via la variable de sortie et donne la sortie via la variable d'entrée. Déchire les quatre premiers cas de test, mais j'attends toujours le cinquième ... Habituellement, j'en ferais toujours ma solution principale et j'espère simplement que cela fonctionne correctement, mais je ne sais pas pourquoi il ne l'a pas a confirmé que 90 est le LCM
9, 6, 2, 1, 5
lorsque je lui ai donné 90 il y a vingt minutes.(Edit: Il a confirmé la réponse après pas plus de 16 heures, et l'a généré aux côtés du LCM
5, 5, 7, 1, 1
après environ deux jours.)Et un autre prédicat complètement différent qui traduit accidentellement plus ou moins la solution Brachylog v1 de Fatalize:
Brachylog v2, 10 octets
Essayez-le en ligne!
Cela a été récupéré d'une solution que j'avais faite pour ce défi avant de réaliser que la sortie n'était pas limitée à un entier.
la source
Pyth -
76 octetsPas intégré.
Essayez-le en ligne ici .
la source
[4]
ou autre chose avec un facteur premier répété.