Biorąc pod uwagę tablicę dodatnich liczb całkowitych, wyprowadza stabilną tablicę różnych czynników pierwszych tych liczb całkowitych. Innymi słowy, dla każdej liczby całkowitej w danych wejściowych w kolejności, uzyskaj jej czynniki pierwsze, posortuj je i dołącz do liczb wyjściowych dowolne liczby pierwsze, które nie są jeszcze w danych wyjściowych.
Przypadki testowe
[1,2,3,4,5,6,7,8,9,10] -> [2,3,5,7]
[10,9,8,7,6,5,4,3,2,1] -> [2,5,3,7]
[100,99,98,1,2,3,4,5] -> [2,5,3,11,7]
[541,60,19,17,22] -> [541,2,3,5,19,17,11]
[1,1,2,3,5,8,13,21,34,45] -> [2,3,5,13,7,17]
[6,7,6,7,6,7,6,5] -> [2,3,7,5]
[1] -> []
[8] -> [2]
[] -> []
Dane wyjściowe mogą być tablicą lub listą liczb całkowitych lub ciągów, danych wyjściowych z ogranicznikami lub dowolnym innym standardowym sposobem generowania uporządkowanej listy liczb.
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
code-golf
array-manipulation
primes
Stephen
źródło
źródło
Odpowiedzi:
05AB1E , 3 bajty
Dane wyjściowe jako lista ciągów.
Wypróbuj online!
2sable , 3 bajty
Tak, działa to również w 2sable. Zwraca także listę ciągów.
Wypróbuj online!
źródło
f U
. Kocham to.Łuska , 3 bajty
1 bajt zapisany dzięki @Zgarb .
Wypróbuj online!
Wyjaśnienie
źródło
Σ†
może byćṁ
.Narzędzia Bash + GNU, 37
Wypróbuj online .
źródło
nl|sort|...
można to zrobić za pomocąawk
:awk '!a[$0]++'
(drukuj, jeśli nie widziałeś wcześniej, więc zamówienie nigdy nie zostanie utracone), oszczędzając 15 bajtów. Następniesed
polecenie można wyeliminować, używając nieco dłuższegoawk
:factor|awk '!/:/&&!a[$0]++' RS='[ \n]+'
(podziel rekordy na spacje i znaki nowej linii, pomiń rekordy za pomocą:
), zapisując kolejne 4 bajty.tr
:factor|tr \ \\n|awk '!/:/&&!a[$0]++'
(to dwie spacje po pierwszym odwrotnymMATL , 6 bajtów
Wypróbuj online!
Wyjaśnienie:
Ciekawe ciekawostki MATL: ogólnie wszystkie funkcje odnoszą się do wektorów (tablic) równie łatwo. Ale w tym przypadku liczba czynników jest zmienna dla każdego wejścia, a Matlab i przez rozszerzenie MATL zasadniczo zajmują się tylko macierzami kwadratowymi, więc musiałem użyć pętli for
"
.Ponadto MATL ma dwóch głównych operatorów konkatenacji:
h
orazv
konkatenację poziomą i pionową. Ich zachowanie różni się znacznie:v
łączy cały stos, nawet jeśli ma tylko jeden element, jak w naszej pierwszej iteracji.h
zajmuje dokładnie dwa elementy i zawiedzie, jeśli tylko jeden jest obecny, co czyni go nieodpowiednim dla tej aplikacji.źródło
Brachylog , 6 bajtów
Wypróbuj online!
Brachylog , 6 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Pyth ,
54 bajtówWypróbuj tutaj! lub Zweryfikuj wszystkie przypadki testowe.
Alternatywny:
{sPM
Wyjaśnienie
źródło
PowerShell , 102 bajty
Wypróbuj online!
(Zapożycza pomysł na faktoryzację z odpowiedzi TessellatingHeckler na temat „Odsuń się ode mnie, Szatanie Najwyższy!”)
Pobiera dane wejściowe jako tablicę literalną
$x
. Tworzy nową pustą tablicę$a
. Pętle się skończyły$x
. Każda iteracja, od której zapętlamy,2
aż do bieżącej liczby, sprawdzając, czy to jest czynnik,-and
jest liczbą pierwszą, a następnie|sort
jego wynik i dołączamy go$a
. Kiedy skończyliśmy przechodzić$x
, wyprowadzamy,$a
ale|select
tylko ich-u
nikłe liczby. Wykorzystuje to fakt, że unikatowy przechodzi od lewej do prawej, zachowując pierwsze wystąpienie, które pasuje do opisu problemu. Te liczby są pozostawione w potoku, a dane wyjściowe są niejawne.źródło
CJam, 11 bajtów
Funkcja, która pobiera tablicę liczb całkowitych i wyświetla tablicę liczb całkowitych.
Wersja testowa
źródło
S*
w zamkniętym nawiasie.Gaia , 4 bajty
Wypróbuj online!
Wyjaśnienie
źródło
Galaretka ,
54 bajtów1 bajt dzięki klaszczeniu.
Wypróbuj online!
źródło
Æf
, więc prawdopodobnie możesz upuścić bajt za pomocąÆfFQ
Pyke , 4 bajty
Wypróbuj tutaj!
Wyjaśnienie
źródło
Mathematica, 64 bajty
Wejście
źródło
Select[#&@@@Gather[#&@@@Join@@FactorInteger@#],#>1&]&
Haskell, 77 bajtów
Wyjaśnienie:
x!y
wraca operator listę wszystkich głównych czynnikówx
, które są większe niż lub równey
(!2)
funkcja zwraca listę wszystkich czynników swojej tezyWypróbuj online.
źródło
Brachylog , 6 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
[10,9,8,7,6,5,4,3,2,1]
. Powinno być[2, 5, 3, 7]
, nie[2, 3, 5, 7]
ḋᵐoᵐcd
Ohm v2 , 3 bajty
Kolejny 3-bajtowy (dzięki językom z automatyczną wektoryzacją).
Wypróbuj online!
Wyjaśnienie
źródło
Japt , 6 bajtów
Sprawdź to
Wyjaśnienie
Domniemane wejście tablicy
U
. Map (m
) powyżej, uzyskując współczynniki (k
) każdego elementu. Spłaszcz (c
), pobierz unikalne elementy (â
) i niejawnie wyjdź.źródło
Python 3 ,
128 125116 bajtówTo jest czyste rozwiązanie Pythona. Brak paczek Dzięki Halvardowi za oszczędność 9 bajtów.
Wypróbuj online!
Python 2 ,
133 127126 bajtówWypróbuj online!
Python 2 ,
142 138134 bajtówWypróbuj online!
Bardzo zaskoczony, że nie ma jeszcze odpowiedzi na Python. Praca nad golfem.
źródło
Najgorsze , 16 bajtów
Wypróbuj online!
Zrobione z pomocą @cairdcoinheringaahing w Deorst na czacie (zauważ, że rozwiązania są różne).
Wyjaśnienie
źródło
Najgorsze , 16 bajtów
Wypróbuj online!
Zrobione z pomocą @ Mr.Xcoder. Jest to zdecydowanie za długo na pseudogolfing.
Jak to działa
źródło
Pyke , 4 bajty
Wypróbuj tutaj!
źródło
Oktawa, 61 bajtów
Wypróbuj online!
źródło
MY, 17 bajtów
Wypróbuj online!
W jaki sposób?
⎕
oceniane dane wejścioweḊ
dzielniki (wektoryzuje / weryfikuje)ḟ
spłaszczyć’⊢f(‘
zmniejszanie, filtrowanie, zwiększanie (usuwa1
)53ǵ'
ciąg znaków'P'
na stronie kodowej MY, czyli testowanie pierwszeństwa. Niestety0x35=53
jest to 16. liczba pierwsza i nie ma polecenia wypychania16
na stos> _ <.ƒ
jako funkcjaf(
filtruj według tegoū
wyjątkowy←
wynikźródło
C ++, 118 bajtów
Musi zostać przekazany sygnał wejściowy w postaci a
std::vector<int>
, zwraca innystd::vector<int>
wynik.źródło
J, 10 bajtów
Jestem pewien, że jakiś sprytny J-er mógłby to skrócić.
źródło
Właściwie 5 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
Python 2,
88119103 bajtówNo to ruszamy. Przy prawidłowym sortowaniu.
W zasadzie nie mogę go uruchomić na TIO, ponieważ pakiet nie jest obsługiwany. Działa na mojej maszynie. Oto moje wyniki testu:
Jakoś nie byłem w stanie wykonać tej funkcji jako funkcji lambda. Ilekroć próbuję zwrócić zgodność listy, zwraca [Brak, Brak, ...]. Jeśli tylko coś przeoczę, czy ktoś mógłby wskazać ten błąd? Dziękujemy za opinię!
Edytować:
Korzystając z algorytmu sortowania Mr. Xcoders, mogłem zmniejszyć kod o 16 bajtów. Dziękuję za tę część.
źródło
[2, 5, 3, 7]
. Kolejność wyjść ma znaczenie.sorted(set().union(*map(primefac,l)))
s.append(x) for
->s.append(x)for
,primefac(i)) for
->primefac(i))for
,[]) if
->[])if
Braingolf , 7 bajtów
Wypróbuj online!
Och, spójrz, to w zasadzie łańcuch 4 wbudowanych
Wyjaśnienie
źródło
[10,9,8,7,6,5,4,3,2,1]
. - Kolejność ma znaczenie: powinieneś wrócić[2, 5, 3, 7]
zamiast[2, 3, 5, 7]
.K
tylko szkodzi tutaj.APL (Dyalog Extended) , 4 bajty SBCS
Wypróbuj online!
źródło