Najmniejszą wspólną wielokrotnością (LCM) zbioru liczb A
jest najmniejsza liczba całkowita b
taka, która b/a
jest liczbą całkowitą dla wszystkich liczb całkowitych a
w A
. Definicję tę można rozszerzyć na liczby wymierne!
Zadanie
Znajdź najmniejsze pozytywne wymierne, b
takie b/a
jak liczba całkowita dla wszystkich wymiernych a
danych wejściowych.
Zasady
- Standardowe luki są zabronione.
- Możesz wprowadzić liczniki i mianowniki osobno na wejściu, ale nie możesz brać liczb podwójnych, liczb zmiennoprzecinkowych itp.
- Dane wejściowe mogą nie zostać w pełni zmniejszone.
- Możesz przyjmować liczby całkowite jako racjonalne o mianowniku
1
. - Zgłoszenia, które podawałyby racjonalne liczby do wbudowanego LCM / GCD są dozwolone, ale nie konkurują.
Przypadki testowe
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
To jest golf golfowy , więc wygrane są przy użyciu najmniejszej ilości bajtów!
code-golf
number
arithmetic
rational-numbers
JungHwan Min
źródło
źródło
LCM[numerators]/GCD[denominators]
mogą nie działać, jeśli dane wejściowe zawierają nieskróconą liczbę wymierną. np1/3, 2/8
.Odpowiedzi:
Galaretka , 19 bajtów
Wypróbuj online!
źródło
g/:@$€
->:g/$€
:g/$€ZµḢæl/,Ḣg/$
J, 3 bajty, niekonkurujące.
Biorąc pod uwagę listę racjonalnych danych wejściowych, składa się ona przez LCM.
źródło
sed, 374 (373 + 1) bajtów
-E
Flaga sed liczy się jako jeden bajt. Uwaga: jeszcze nie próbowałem grać w golfa i zapewne nie zrobię tego przez dłuższy czas.Dane wejściowe przyjmowane są w jednostkowej, a dane wyjściowe w jednostkowej. Przestrzenie muszą otaczać każdą frakcję. Przykład:
echo " 1/111 111/11111 111111/111 "
.Wypróbuj online!
źródło
Python 2 , 65 bajtów (niekonkurencyjny)
Wypróbuj online!
źródło
JavaScript (ES6), 85 bajtów
Nie szukaj wbudowanych! Bez wątpienia ktoś pokona to, stosując podejście rekurencyjne lub coś takiego.
źródło
Pari / GP , 3 bajty, niekonkurujące
Wypróbuj online!
źródło
Perl 6 ,
4642 bajtówSprawdź to
Sprawdź to
Dane wejściowe to lista liczb wymiernych .
Rozszerzony:
źródło
Siatkówka , 117 bajtów
Wypróbuj online! Pobiera dane wejściowe jako serię niepoprawnych ułamków oddzielonych spacją (bez liczb całkowitych lub liczb mieszanych). Wyjaśnienie:
Konwertuje liczbę dziesiętną na jedność.
To zmniejsza każdą frakcję do najniższych warunków. Grupa przechwytywania 1 reprezentuje GCD licznika i mianownika, dlatego liczymy liczbę przechwyceń przed i po
/
.\b(1+)+/(\1)+\b
z jakiegoś powodu nie wydaje się poprawnie zliczać liczby przechwytywania, więc używam dodatkowej grupy przechwytywania i dodaję 1 do wyniku.Robi to wiele rzeczy. Grupa przechwytywania 2 reprezentuje GCD liczników pierwszych dwóch frakcji, podczas gdy grupa przechwytywania 3 reprezentuje GCD mianowników.
$#4
jest zatem drugim licznikiem podzielonym przez ich GCD. (Ponownie nie mogłem liczby przechwyceń pierwszego licznika, ale muszę tylko podzielić jeden licznik przez ich GCD, więc nie kosztuje mnie to tak dużo.)Teraz, gdy drugi licznik został podzielony przez ich GCD, po prostu używamy tego wyrażenia z jednorzędnego samouczka arytmetycznego, aby pomnożyć je razem, co daje LCM. Następnie powtarzamy ćwiczenie dla pozostałych ułamków.
Konwertuje unary z powrotem na dziesiętne.
źródło
Common Lisp, 154 bajty
Używany algorytm (określony dla liczb całkowitych, ale działa również dla wymiernych).
Najpierw utwórz ze sobą asocjatywną listę danych wejściowych, aby śledzić początkowe wartości elementów, tak aby kolejność operacji była określona przez „samochód” z listy.
Przypadki testowe:
Uwaga: Rozwiązanie nie wymaga budowania
lcm
igcd
akceptuje liczby całkowite.źródło
(/ (lcm 1 3 5 7) (gcd 2 4 6 8))
.(lcm 1 3 5 7)
, ponieważ liczby całkowite są podtypem racjonalnych, ale myślę, że reguła powinna wykluczać użycie alcm
lub,gcd
który pozwala na racjonalne wprowadzanie danych.lcm
igcd
.Mathematica, 3 bajty, niekonkurujące
Wbudowana
LCM
funkcja Mathematica jest w stanie obsłużyć dane racjonalne.źródło
PHP , 194 bajty
-4 Bajty z PHP> = 7.1
[$n,$d]=$_GET
zamiastlist($n,$d)=$_GET
Wypróbuj online!
źródło
Common Lisp,
8778 bajtówZa pomocą
lcm
igcd
, które mają liczby całkowite:Więcej golfa:
źródło