Inspirowany tym wpisem Numberphile
tło
Te numery odległość sześcianu liczby całkowitej N określone są tu jako zbiór liczb całkowitych, które są x³ odległości dla danego x . Dla prostego przykładu, za pomocą n=100
i x=2
, liczbami odległości między sześcianami są {92,108}
.
Można to rozszerzyć na większy zestaw, po prostu zmieniając x . Z x ∈ {1,2,3,4}
tym samym n=100
mamy zestaw wynikowy {36,73,92,99,101,108,127,164}
.
Zdefiniujmy CD (n, x) jako zbiór wszystkich liczb całkowitych n ± z³
z z ∈ {1,2,3,...,x}
.
Teraz możemy skupić się na niektórych specjalnych właściwościach tych liczb odległości między sześcianami . Spośród wielu szczególnych właściwości, które mogą mieć numery, dwa właściwości nas interesuje oto pierwszości i prime dzielniki .
W powyższym przykładzie płyty CD (100,4) zauważ, że 73, 101, 127
wszystkie są liczbą pierwszą. Jeśli usuniemy je z zestawu, pozostanie nam {36,92,99,108,164}
. Wszystkie główne dzielniki tych liczb są (w kolejności) {2,2,3,3,2,2,23,3,3,11,2,2,3,3,3,2,2,41}
, co oznacza, że mamy 5 różnych głównych dzielników {2,3,23,11,41}
. Możemy zatem określić, że CD (100,4) ma ravenity 1 o 5
.
Wyzwanie polega tu na napisaniu funkcji lub programu, w jak najmniejszej liczbie bajtów, który wyprowadza kruchość danego wejścia.
Wejście
- Dwie dodatnie liczby całkowite
n
orazx
w dowolnym dogodnym formacie.
Wynik
- Pojedyncza liczba całkowita opisująca zachłanność dwóch liczb wejściowych, obliczona za pomocą CD (n, x) .
Zasady
- Wejście / wyjście może odbywać się dowolną odpowiednią metodą .
- Obowiązują standardowe ograniczenia luk .
- Dla ułatwienia obliczeń można założyć, że dane wejściowe będą takie, że CD (n, x) będzie mieć tylko liczby dodatnie w zestawie (tj. Żadne CD (n, x) nigdy nie będzie miało liczb ujemnych lub zero).
- Funkcja lub program powinien być w stanie obsłużyć liczby wejściowe, aby
n + x³
pasowały do rodzimego typu danych liczb całkowitych w twoim języku. Na przykład dla 32-bitowej liczby całkowitej ze znakiemn + x³ < 2147483648
możliwe są wszystkie liczby wejściowe z .
Przykłady
n,x - output
2,1 - 0 (since CD(2,1)={1,3}, distinct prime divisors={}, ravenity=0)
5,1 - 2
100,4 - 5
720,6 - 11
Przypisy
1 - nazwany tak dlatego, że nie jesteśmy zainteresowani w kardynalnej ity zestawu, ale inny rodzaj ptaka. Ponieważ mamy do czynienia z „wspólnymi” dzielnikami, postanowiłem użyć wspólnego kruka .
100,4
5? Numery odległość sześcian z tego zestawu są36,164
, a głównymi czynnikami tego zestawu są2,3,41
(od czynników tego zestawu są{2, 3, 4, 6, 9, 12, 18, 36}
i{2, 4, 41, 82, 164}
, odpowiednio). Dlatego wynik powinien wynosić 3, a nie 5.100,4
jest przykładem, który OP wyjaśnia w sekcji Tło. Twoim błędem wydaje się być to, że powinieneś rozważyć wszystko1..x
, więc[1,2,3,4]
w tym przypadku.Odpowiedzi:
Galaretka, 16 bajtów
Bierze x i n jako argumenty wiersza poleceń, w tej kolejności. Wypróbuj online!
Jak to działa
źródło
Pyth -
211918 bajtówZastanawiam się, czy jest jakaś sztuczka.
Pakiet testowy .
źródło
Julia, 107 bajtów
Jest to funkcja, która akceptuje dwie liczby całkowite i zwraca liczbę całkowitą.
Nie golfowany:
źródło
05AB1E ,
2019 bajtówKod:
Wejście w formie
x
,n
. Wykorzystuje kodowanie CP-1252 .Wypróbuj online!
źródło
MATL , 21 bajtów
Wejściowy
x
,n
rozdzielone linią.Wypróbuj online!
Wyjaśnienie
źródło
J, 30 bajtów
Jest to czasownik dynastyczny, używany w następujący sposób:
Wypróbuj tutaj.
Wyjaśnienie
źródło
@:+(
dlaczego taki smutny, niesamowity facet od włosów?Python 3.5,
218198 bajtów:( Dzięki @Blue za uratowanie mnie 20 bajtów.)
Przyjemna, jednostopniowa funkcja lambda, chociaż może być nieco długa. Ponieważ korzystałem z Pythona, musiałem wymyślić własny sposób na znalezienie kompozytów dla pierwszego kroku, a następnie głównych dzielników dla ostatniego kroku, więc nie było to bardzo łatwe, a ja sam byłem najkrótszy . mógłbym to dostać. Niemniej jednak robi to, co musi i jestem z tego dumny. :) Jednak wszelkie wskazówki dotyczące gry w golfa są mile widziane.
źródło
PARI / GP , 79 bajtów
Oto moja oryginalna prosta implementacja. Zoptymalizowana wersja powyżej łączy dwa wektory w jeden, nieco bardziej skomplikowany wektor.
źródło
f
(lubię tof=(n,x)->...
), możesz go przetestowaćf(100,4)
. Alternatywnie możesz wywołać go w jednym wierszu za pomocą((n,x)->...)(100,4)
.Rubinowy, 138 bajtów
To była gra słów wyzwanie y. :-)
źródło
Rubin,
132120114 bajtówWiem, że to rozwiązanie wciąż wymaga gry w golfa. Wszelkie wskazówki dotyczące gry w golfa są mile widziane.
Ungolfing:
źródło
Python 3.5 -
177175159 bajtówWszelkie wskazówki dotyczące golfa są mile widziane :)
Nie golfowany:
źródło
Wolfram Language (Mathematica) , 90 bajtów
Wypróbuj online!
bez golfa: kod jest odczytywany głównie od prawej do lewej,
źródło