Na podstawie wiadomości czatu
Wyzwanie
Biorąc pod uwagę liczbę wejściową n > 9
, konstruuj jej odwrotność, ignorując początkowe zera. Następnie zbuduj listę wszystkich czynników pierwszych, których liczba i jej odwrotność nie mają ze sobą wspólnego. Pomnóż te czynniki razem, aby utworzyć niepospolity numer czynnika wejściowego.
Innymi słowy: jeśli rev(n)
oznacza dziesiętne odwrócenie liczby całkowitej n
, obliczyć iloczyn n
i rev(n)
podzielony przez kwadrat liczby gcd(n, rev(n))
.
Podaj tę liczbę.
Sprawdzone przykłady
Na przykład 2244
odwraca do 4422
. Pierwszymi czynnikami pierwszego są, [2, 2, 3, 11, 17]
a pierwszymi czynnikami odwrotnymi są [2, 3, 11, 67]
. Liczby, które nie są wspólne [2, 17, 67]
, 2278
to również wynik.
W innym przykładzie 1234
odwraca się do 4321
. Produkt jest, 5332114
a GCD jest 1
, więc wyjście jest 5332114
.
Dalsze wyjaśnienia
Oczywiście liczba palindromowa będzie miała wszystkie swoje czynniki wspólne z jej odwrotnością, więc w takim przypadku wynikiem jest 1
( n*n/n^2
). Oczywiście, możliwe jest również, że wyjście będzie zwielokrotnieniem wszystkich czynników (tj. Gcd wynosi 1 - wejście i jego odwrotność są równe-pierwsze), tak jak w 1234
przykładzie.
Zasady
- Można założyć, że dane wejściowe i wyjściowe pasują do natywnego typu liczb całkowitych twojego języka.
- Dane wejściowe i wyjściowe można podawać w dowolnym dogodnym formacie .
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Jeśli to możliwe, dołącz link do internetowego środowiska testowego, aby inne osoby mogły wypróbować Twój kod!
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
Przykłady
in
out
17
1207
208
41704
315
1995
23876
101222302
źródło
1995
(jak sądzę)Odpowiedzi:
05AB1E , 6 bajtów
Kod
Wykorzystuje kodowanie 05AB1E . Wypróbuj online!
Wyjaśnienie
źródło
J, 18 bajtów
Wypróbuj online!
Alternatywnie (zasługa na podejście @ Adnana dla drugiego),
J, 15 bajtów (rozwiązanie @ mil)
Wyjaśnienie
To tylko prosta implementacja algorytmu podanego przez PO.
Wyjaśnienie, rozwiązanie @ mil
Bardzo mądry.
źródło
*/@(,%+.)|.&.":
Mathematica, 33 bajty
Wypróbuj online!
źródło
Galaretka , 8 bajtów
Wypróbuj online!
źródło
DU
zamiastṚ
)Ṛ
na liczbie całkowitej odwraca cyfry, ale nie konwertuje z powrotem na liczbę całkowitą.JavaScript (ES7),
6764 bajtówTyle bajtów tylko po to, by odwrócić liczbę :(
Pobiera dane wejściowe jako ciąg.
Spróbuj
źródło
Haskell, 44 bajty
Wypróbuj online!
źródło
R ,
10889 bajtów-19 bajtów dzięki plannapusowi za jego algorytm gcd
Spróbuje to przydzielić co najmniej jeden wektor wielkości
4*n
bajtów (i myślę, że aż 4), więc spowoduje to błąd pamięci dla wystarczająco dużegon
.Wypróbuj online!
źródło
Python 3 ,
7368 bajtów-5 bajtów dzięki Mr. Xcoder.
Wypróbuj online!
źródło
MATL ,
131211 bajtówWypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
źródło
Neim , 11 bajtów
Wypróbuj online!
Brak wbudowanego GCD. ; -;
źródło
Łuska , 10 bajtów
Wypróbuj online!
-1 dzięki H.PWiz .
-1 dzięki Zgarb .
źródło
Japt ,
131211 bajtówSpróbuj
Wyjaśnienie
Domniemane wprowadzenie liczby całkowitej
U
. Pusty wiersz na początku zapobiega zastąpieniu następującego wierszaU
Konwertuj
U
na string (s
), odwróć go (w
), przekonwertuj z powrotem na liczbę całkowitą i przypisz do zmiennejV
.Pomnóż
U
przezV
.Podzielić.
GCD z
V
iU
.Do kwadratu Wyjściowa wartość wynikowa liczby całkowitej.
Alternatywnie, 13 bajtów
Tylko dlatego, że lubię móc używać
N
.Spróbuj
źródło
Pyth , 13 bajtów
Wypróbuj tutaj!
Pyth , 15 bajtów
Wykorzystuje podejście Adnana i przyjmuje dane wejściowe jako ciąg znaków.
Wypróbuj tutaj
źródło
Kod maszynowy x86, 39 bajtów
Powyższa funkcja oblicza „nietypowy numer współczynnika” określonego parametru wejściowego. Zgodnie z konwencją wywoływania __fastcall opartą na rejestrze parametr jest przekazywany do
ECX
rejestru. Wynik jest zwracany doEAX
rejestru, podobnie jak we wszystkich konwencjach wywoływania x86.Wypróbuj online!
Pisanie w tak zwartej formie zajęło strasznie dużo czasu, ale było to zabawne ćwiczenie. Wiele zniekształceń, aby uzyskać najbardziej optymalne harmonogramowanie rejestrów, w ramach ograniczeń x86
DIV
ukrytych argumentów dyspozycję i starają się używać krótkich kodowania zMUL
orazXCHG
instrukcje w miarę możliwości. Byłbym bardzo ciekawy, czy ktoś może wymyślić inny sposób dalszego skrócenia. Do końca mój mózg był dość smażony. Dzięki kompilatorowi następnym razem go zobaczysz! (Chociaż jest to sposób lepszy kod niż co kompilator wygeneruje ... Zwłaszcza jeśli manipulowane go lekko bez ograniczeń rozmiaru, usuwanie takich rzeczyXCHG
).źródło
Perl 5 , 72 bajtów
71 bajtów kodu + 1 flaga (
-p
)Wypróbuj online!
źródło
Pyke , 8 bajtów
Wypróbuj tutaj!
Pobiera dane wejściowe jako ciąg.
źródło
Python 2 , 70 bajtów
Dzięki i cri everytim .
Wypróbuj online!
Python 2 , 77 bajtów
Zauważ, że w Pythonie 2 nie możesz użyć tej
math.gcd()
metody i musisz to zrobić „ręcznie”.Wypróbuj online!
źródło
gcd
jakofractions.gcd
.math.gcd
.Ohm , 9 bajtów
Wypróbuj online!
źródło
Java 8,
158150148138125123116107+ 19bajtówWypróbuj online!
źródło
t!=0
przezt>0
, ponieważ t nigdy nie będzie ujemny.f*r/(i*i)
jest taki sam jakf/i*r/i
. Możesz upuścić,f=t;
ar=i;
jeśli połączysz zadaniei
it
.while(t>0)t=i%(i=t);
(-11 bajtów).