Le plus petit commun multiple (LCM) d'un ensemble de nombres A
est le plus petit entier b
tel qu'il b/a
soit un entier pour tous les entiers a
de A
. Cette définition peut être étendue aux nombres rationnels!
Tâche
Trouvez le positif le plus petit rationnel b
tel que b/a
est un nombre entier pour tous rationals a
dans l'entrée.
Règles
- Les failles standard sont interdites.
- Vous pouvez prendre les numérateurs et les dénominateurs séparément dans l'entrée, mais pas les doubles, les flottants, etc.
- L'entrée peut ne pas être complètement réduite.
- Vous pouvez prendre des entrées entières comme rationnelles avec dénominateur de
1
. - Les soumissions qui fourniraient des nombres rationnels à un module intégré LCM / GCD sont autorisées, mais non concurrentes.
Cas de test
In: 3
Out: 3
In: 1/17
Out: 1/17
In: 1/2, 3/4
Out: 3/2
In: 1/3, 2/8
Out: 1
In: 1/4, 3
Out: 3
In: 2/5, 3
Out: 6
In: 1/2, 3/4, 5/6, 7/8
Out: 105/2
Il s'agit de code-golf , donc les soumissions utilisant le moins d'octets gagnent!
code-golf
number
arithmetic
rational-numbers
JungHwan Min
la source
la source
LCM[numerators]/GCD[denominators]
peut ne pas fonctionner lorsque l'entrée contient un nombre rationnel non réduit. par exemple1/3, 2/8
.Réponses:
Gelée , 19 octets
Essayez-le en ligne!
la source
g/:@$€
->:g/$€
:g/$€ZµḢæl/,Ḣg/$
J, 3 octets, non concurrent.
Étant donné une liste d'entrées rationnelles, cela fait passer LCM à travers.
la source
sed, 374 (373 + 1) octets
Le
-E
drapeau de sed compte pour un octet. Remarque: je n'ai pas encore essayé de jouer au golf, et je ne le ferai probablement pas depuis un certain temps.L'entrée est prise en unaire et la sortie est en unaire. Les espaces doivent entourer chaque fraction. Exemple:
echo " 1/111 111/11111 111111/111 "
.Essayez-le en ligne!
la source
Python 2 , 65 octets (non concurrent)
Essayez-le en ligne!
la source
JavaScript (ES6), 85 octets
Ne cherchez aucun intégré! Nul doute que quelqu'un va battre cela en utilisant une approche récursive ou quelque chose.
la source
Pari / GP , 3 octets, non concurrent
Essayez-le en ligne!
la source
Perl 6 ,
4642 octetsEssaye-le
Essaye-le
L'entrée est une liste de nombres rationnels .
Étendu:
la source
Rétine , 117 octets
Essayez-le en ligne! Prend l'entrée comme une série séparée par des espaces de fractions impropres (pas d'entiers ou de nombres mixtes). Explication:
Convertit décimal en unaire.
Cela réduit chaque fraction à ses termes les plus bas. Le groupe de capture 1 représente le GCD du numérateur et du dénominateur, nous comptons donc le nombre de captures avant et après le
/
.\b(1+)+/(\1)+\b
ne semble pas compter correctement le nombre de captures pour une raison quelconque, donc j'utilise un groupe de capture supplémentaire et j'ajoute 1 au résultat.Cela fait un certain nombre de choses. Le groupe de capture 2 représente le GCD des numérateurs des deux premières fractions, tandis que le groupe de capture 3 représente le GCD des dénominateurs.
$#4
est donc le deuxième numérateur divisé par leur GCD. (Encore une fois, je ne pouvais pas connaître le nombre de captures du premier numérateur, mais je n'ai besoin que de diviser un numérateur par leur GCD, donc cela ne me coûte pas si cher.)Maintenant que le deuxième numérateur a été divisé par leur GCD, nous utilisons simplement cette expression du tutoriel arithmétique unaire pour multiplier les deux ensemble, ce qui donne le LCM. Nous répétons ensuite l'exercice pour toutes les fractions restantes.
Convertit unaire en décimal.
la source
Lisp commun, 154 octets
Algorithme utilisé (spécifié pour les entiers, mais fonctionne également pour les rationnels).
Faites d'abord une liste associative des données d'entrée avec elle-même, pour obtenir la trace des valeurs initiales des éléments, de sorte que la séquence de fonctionnement est donnée par les «voitures» de la liste.
Cas de test:
Remarque: La solution est sans l'utilisation de la construction
lcm
etgcd
, qui acceptent des entiers.la source
(/ (lcm 1 3 5 7) (gcd 2 4 6 8))
.(lcm 1 3 5 7)
, car les entiers sont un sous-type de rationnels, mais je pense que la règle est censée exclure l'utilisation d'unlcm
ougcd
qui permet des entrées rationnelles.lcm
etgcd
.Mathematica, 3 octets, sans compétition
Intégré de Mathematica
LCM
fonction est capable de gérer les entrées de nombres rationnels.la source
PHP , 194 octets
-4 octets avec PHP> = 7.1
[$n,$d]=$_GET
au lieu delist($n,$d)=$_GET
Essayez-le en ligne!
la source
Lisp commun,
8778 octetsEn utilisant
lcm
etgcd
, qui ont des entrées entières:Plus golfé:
la source