Tytuł najnowszego wideo Numberphile , 13532385396179 , jest stałym punktem następującej funkcji f na dodatnich liczbach całkowitych:
Niech n będzie dodatnią liczbą całkowitą. Napisz rozkład na czynniki pierwsze w zwykły sposób, np. 60 = 2 2 · 3 · 5, w którym liczby pierwsze są zapisywane w kolejności rosnącej, a wykładniki 1 są pomijane. Następnie sprowadź wykładniki do linii i pomiń wszystkie znaki mnożenia, uzyskując liczbę f (n). [...] na przykład f (60) = f (2 2 · 3 · 5) = 2235.
(Powyższa definicja pochodzi z problemu 5 z pięciu problemów o wartości 1000 USD - John H. Conway )
Należy zauważyć, że f (13532385396179) = f (13 · 53 2 · 3853 · 96179) = 13532385396179.
Zadanie
Weź dodatnią liczbę całkowitą zespoloną n
jako dane wejściowe i wyjściowe f(n)
.
Inny przykład
48 = 2 4 · 3, tak, f (48) = 243.
Przypadki testowe
Więcej przypadków testowych jest dostępnych tutaj .
4 -> 22
6 -> 23
8 -> 23
48 -> 243
52 -> 2213
60 -> 2235
999 -> 3337
9999 -> 3211101
źródło
Odpowiedzi:
Python,
166162159 bajtówJesteście znacznie lepsi. Tego właśnie użyłem! (algorytm, który go rozwiązał, nazywa to)
źródło
Brachylog , 8 bajtów
Wypróbuj online!
Wyjaśnienie
Zamiast tego możesz użyć
ℕ₂ˢ
( wybierz wszystkie liczby całkowite większe lub równe 2 );1x
, co jest prawdopodobnie bardziej czytelne i bardziej zgodne z duchem Brachylog.źródło
Galaretka , 6 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
V
= "połączony w pojedynczy ciąg i ewaluuj jak galaretka"Ḍ
(Konwertujesz z dziesiętnego na całkowity)?FḌ
w przeszłości - to dobra wskazówka!Mathematica,
4336 bajtówWypróbuj online!
źródło
DeleteCases
jest długi, możesz użyć/.1->""
lub/.1->##&[]
(alternatywna forma/.1->Nothing
1
aby zapobiec analizowaniu jako... / (0.1)
.CJam , 8 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
e_
spłaszczyć, gdyż to właśnie tam jest za, ale to nie zmienia wynik.e_
tylko głębokie spłaszczenie i używam,:~
gdy jest to tylko jeden poziom.05AB1E , 10 bajtów
Wypróbuj online!
źródło
05AB1E ,
1211 bajtówWypróbuj online!
Wyjaśnienie
źródło
48
.Pyth, 12 bajtów
Spróbuj!
alternatywnie, 12 bajtów
Spróbuj tego!
wyjaśnienie
źródło
Pyth, 11 bajtów
Wypróbuj tutaj
źródło
Python 2 , 99 bajtów
Wypróbuj online!
Jeśli dane wejściowe są ograniczone do wartości poniżej
2147483659
, obastr(...)
mogą zostać zastąpione przez`...`
zapisanie 6 bajtów (program i tak będzie bardzo wolny dla liczb, których to dotyczy!).źródło
Ohm , 11 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Japt , 19 bajtów
Przetestuj online!
Wyjaśnienie
źródło
PHP , 88 bajtów
Wypróbuj online!
źródło
C #,
206100 bajtówWersja pełna / sformatowana:
źródło
JavaScript - 91 bajtów
Wyjaśnienie
źródło
Java 8, 103 znaki
Całkiem proste rozwiązanie.
Nie golfowany:
źródło
Oktawa , 69 bajtów
Wypróbuj online!
Skończyło się to dość długim czasem, ale to wygeneruje pożądaną wydajność.
Zasadniczo używamy funkcji histogramu do zliczania liczby wystąpień unikalnych wartości w pierwotnym rozkładzie wartości wejściowej.
factor()
funkcji podaje czynniki pierwsze w kolejności rosnącejunique()
wartości w tej tablicyhist()
zwraca liczbę wystąpieńKiedy mamy już dwie tablice (jedną dla unikalnych czynników, drugą dla zliczeń), konkatenujemy tablice pionowo (jedną na drugiej), a następnie spłaszczamy. To przeplata czynniki z zliczeniami.
Na koniec wyświetlamy wynik jako ciąg znaków zapewniający pominięcie jednego z nich w końcowej tablicy. Jedyne czasy, w których 1 mogą się pojawić, to jeśli liczba wynosiła 1, ponieważ 1 nigdy nie będzie czynnikiem podstawowym. Ta eliminacja jest wykonywana przed konwersją na ciąg, więc nie wpłynie na rzeczy takie jak liczba 10.
źródło
Rubin , 45 + 7 bajtów
Wymaga flagi
-rprime
.Wypróbuj online!
źródło
Pyth - 16 bajtów
Spróbuj
Inne rozwiązanie:
źródło
FN
przezV
.r8
Przydatne wydaje się także (kodowanie w czasie wykonywania).R , 72 bajty
Wymaga
pracma
pakietu, który nie jest zainstalowany w TIO.źródło