Das kleinste gemeinsame Vielfache (LCM) eines Satzes von Zahlen A
ist die kleinste Ganzzahl b
, b/a
dh eine Ganzzahl für alle Ganzzahlen a
in A
. Diese Definition kann auf rationale Zahlen erweitert werden!
Aufgabe
Suchen Sie das kleinste positive Rational b
, b/a
das eine Ganzzahl für alle Rationalen a
in der Eingabe ist.
Regeln
- Standardlücken sind verboten.
- Sie können Zähler und Nenner in der Eingabe getrennt verwenden, dürfen jedoch keine Doubles, Floats usw. verwenden.
- Die Eingabe wird möglicherweise nicht vollständig reduziert.
- Sie können Ganzzahleingaben als Rationale mit dem Nenner von verwenden
1
. - Einsendungen, die einer eingebauten LCM / GCD rationale Zahlen zuführen würden, sind zulässig, aber nicht konkurrierend.
Testfälle
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
Das ist Code-Golf , also gewinnen Einsendungen mit den wenigsten Bytes!
code-golf
number
arithmetic
rational-numbers
JungHwan min
quelle
quelle
LCM[numerators]/GCD[denominators]
funktioniert möglicherweise nicht, wenn die Eingabe eine nicht reduzierte rationale Zahl enthält. zB1/3, 2/8
.Antworten:
Jelly , 19 Bytes
Probieren Sie es online!
quelle
g/:@$€
->:g/$€
:g/$€ZµḢæl/,Ḣg/$
J, 3 Bytes, nicht konkurrierend.
Mit einer Liste rationaler Eingaben faltet dies LCM durch.
quelle
sed, 374 (373 + 1) Bytes
Die
-E
Flagge von sed zählt als ein Byte. Hinweis: Ich habe noch nicht versucht, Golf zu spielen, und wahrscheinlich schon seit einiger Zeit nicht mehr.Die Eingabe ist unär und die Ausgabe ist unär. Leerzeichen müssen jeden Bruch umgeben. Beispiel:
echo " 1/111 111/11111 111111/111 "
.Probieren Sie es online!
quelle
Python 2 , 65 Bytes (nicht konkurrierend)
Probieren Sie es online!
quelle
JavaScript (ES6), 85 Byte
Guck mal keine eingebauten! Kein Zweifel, jemand wird dies mit einem rekursiven Ansatz oder so etwas schlagen.
quelle
Pari / GP , 3 Bytes, nicht konkurrierend
Probieren Sie es online!
quelle
Perl 6 ,
4642 BytesProbier es aus
Probier es aus
Die Eingabe ist eine Liste von rationalen Zahlen.
Erweitert:
quelle
Netzhaut , 117 Bytes
Probieren Sie es online! Nimmt Eingaben als durch Leerzeichen getrennte Folge von falschen Brüchen (keine ganzen Zahlen oder gemischten Zahlen). Erläuterung:
Konvertiert Dezimalzahlen in Unärzahlen.
Dies reduziert jeden Bruch auf die niedrigsten Werte. Die Erfassungsgruppe 1 stellt die GCD des Zählers und Nenners dar, daher zählen wir die Anzahl der Erfassungen vor und nach dem
/
.\b(1+)+/(\1)+\b
Aus irgendeinem Grund scheint die Anzahl der Erfassungen nicht richtig zu sein. Daher verwende ich eine zusätzliche Erfassungsgruppe und addiere 1 zum Ergebnis.Dies macht eine Reihe von Dingen. Die Erfassungsgruppe 2 repräsentiert die GCD der Zähler der ersten beiden Brüche, während die Erfassungsgruppe 3 die GCD der Nenner repräsentiert.
$#4
ist daher der zweite Zähler geteilt durch ihre GCD. (Auch hier konnte ich die Anzahl der Erfassungen des ersten Zählers nicht ermitteln, aber ich muss nur einen Zähler durch die GCD teilen, was mich nicht so viel kostet.)Nachdem der zweite Zähler durch die GCD geteilt wurde, verwenden wir diesen Ausdruck aus dem Tutorial für die unäre Arithmetik, um die beiden zu multiplizieren, was zur LCM führt. Anschließend wiederholen wir die Übung für alle verbleibenden Brüche.
Wandelt unary zurück in decimal um.
quelle
Common Lisp, 154 Bytes
Algorithmus verwendet (angegeben für ganze Zahlen, funktioniert aber auch für rationale Zahlen).
Erstellen Sie zunächst eine assoziative Liste der Eingabedaten mit sich selbst, um die Anfangswerte der Elemente zu verfolgen, sodass die Betriebssequenz durch die "Autos" der Liste gegeben ist.
Testfälle:
Anmerkung: Die Lösung ist ohne die Verwendung von building
lcm
undgcd
, die ganze Zahlen akzeptieren.quelle
(/ (lcm 1 3 5 7) (gcd 2 4 6 8))
.(lcm 1 3 5 7)
, da Ganzzahlen ein Subtyp von Rationals sind, aber ich denke, die Regel soll die Verwendung eineslcm
oder ausschließen,gcd
das rationale Eingaben zulässt.lcm
und zu verwendengcd
.Mathematica, 3 Bytes, nicht konkurrierend
Die eingebaute
LCM
Funktion von Mathematica ist in der Lage, rationale Zahleneingaben zu verarbeiten.quelle
PHP , 194 Bytes
-4 Bytes mit PHP> = 7.1
[$n,$d]=$_GET
stattlist($n,$d)=$_GET
Probieren Sie es online!
quelle
Common Lisp,
8778 BytesVerwenden von
lcm
undgcd
, die Integer-Eingaben haben:Mehr Golf:
quelle