Wprowadzenie
Odwróć i dodaj jest tak proste, jak się wydaje, weź n
i dodaj do cyfr w odwrotnej kolejności. (np. 234 + 432 = 666).
Jeśli zastosujesz ten proces wielokrotnie, niektóre liczby ostatecznie osiągną liczbę pierwszą, a niektóre nigdy nie osiągną liczby pierwszej.
Przykład
Obecnie mam
11431 rep.
11431 is not prime
11431 + 13411 = 24842 which is not prime
24842 + 24842 = 49684 which is not prime
49684 + 48694 = 98378 which is not prime
98378 + 87389 = 185767 which is prime!
Ta liczba uderza w liczbę pierwszą
W przeciwieństwie do tego, żadna wielokrotność 3 nigdy nie trafi liczby pierwszej, ponieważ wszystkie wielokrotności 3 mają sumę cyfr, która jest wielokrotnością 3 i odwrotnie. Zatem odwrócenie i dodanie wielokrotności 3 zawsze spowoduje powstanie nowej wielokrotności 3, a zatem nigdy liczby pierwszej.
Zadanie
Weź dodatnią liczbę całkowitą n
i ustal, czy wielokrotne cofanie i dodawanie spowoduje kiedykolwiek liczbę pierwszą. Podaj wartość prawdy lub fałszu. Albo prawda jak dla osiąga wartość pierwszą, a fałsz dla nie lub na odwrót oba są dopuszczalne.
Liczby pierwsze będą uznawane za osiągające liczbę pierwszą w zerowych iteracjach.
To jest golf golfowy, więc postaraj się, aby Twój kod był jak najkrótszy.
Przypadki testowe
Prawda dla osiąga liczbę pierwszą fałsz, ponieważ nigdy nie osiąga liczby pierwszej
11 -> True
11431 -> True
13201 -> True
13360 -> True
13450 -> True
1019410 -> True
1019510 -> True
22 -> False
1431 -> False
15621 -> False
14641 -> False
Wskazówka
Podczas pisania tego wyzwania odkryłem fajną sztuczkę, która znacznie ułatwia ten problem. Nie jest to niemożliwe bez tej sztuczki i nie jest też trywialne, ale pomaga. Miałem dużo zabawy z odkryciem tego, więc zostawię to w spoilerze poniżej.
Powtarzane odwracanie i dodawanie zawsze będzie miało wartość 11 w 6 iteracjach lub mniej. Jeśli nie trafi liczby pierwszej, zanim trafi wielokrotność 11, nigdy nie trafi liczby pierwszej.
źródło
Odpowiedzi:
Ruby ,
84 79 7774 bajtówWypróbuj online!
źródło
Haskell , 65 bajtów
f
bierzeInteger
i zwraca aBool
.True
oznacza, że osiąga liczbę pierwszą.Wypróbuj online!
Niestety krótki, ale nieefektywny test główny oznacza, że
True
przypadki testowe PO inne niż11
zbyt duże, aby je zakończyć. Ale na przykład 11432 toTrue
sprawa, która się kończy.Możesz także wypróbować ten 3 bajty dłuższy, dla którego TIO może zakończyć wszystkie
True
przypadki testowe:Wypróbuj online!
Pierwsze testy obu wersji zaczynają się od 1, ale tak się składa, że i tak dostaje się do liczby pierwszej (2).
W przeciwnym razie zauważyłem mniej więcej to samo, co GB w spoilerze zgłoszenia Ruby:
źródło
Python 2,
123110 bajtówZaoszczędź 13 bajtów dzięki Ørjan Johansen i Wheat Wizard !
Zwraca 1, jeśli osiągnie liczbę pierwszą, 0, jeśli nie. Wypróbuj online!
źródło
Python 2 ,
787069 bajtówWypróbuj online!
Wyjaśnienie
Ten program opiera się na tym, że
Ten program to rekurencyjna lambda z obwodowymi logicznymi porównaniami. Najpierw sprawdza, czy n jest liczbą pierwszą.
Jeśli to prawda, zwracamy prawdę.
Jeśli jest to fałsz, sprawdzamy, czy jest to wielokrotność 11.
Jeśli false, zwracamy false, w przeciwnym razie zwracamy wynik
f
przy następnej iteracjiźródło
Galaretka , 11 bajtów
Wypróbuj online!
źródło
S
może byćT
również.RD$+$
może być+RD$$
lubRD+<newline>Ç
(wszystkie trywialne modyfikacje)S
ponieważ ma mniejsze szanse na pokazanie czegokolwiek> 1. Nie maRD
, tylkoṚḌ
i wybrałemṚḌ$+$
, żebym mógł to lepiej zorganizować.S
; Powinienem to przemyślećT
, ale to głównie w interesie wszystkich innych.05AB1E ,
1413 bajtówEDYCJA : Zapisano jeden bajt, ponieważ dane wejściowe są ponownie wykorzystywane, jeśli na stosie nie ma wystarczającej liczby elementów
Wypróbuj online!
Wykorzystuje wskazówkę w pytaniu
Jak to działa
źródło
MATLAB,
8881 bajtówźródło
JavaScript (ES6), 73 bajty
Zwraca
0
lubtrue
.Skomentował
Jest to oparte na formule magicznego spoilera opisanej przez Kreatora pszenicy.
Przypadki testowe
Usunąłem dwa największe dane wejściowe z fragmentu, ponieważ ich ukończenie zajmuje kilka sekund. (Ale oni też działają.)
Pokaż fragment kodu
źródło
Mathematica, 45 bajtów
źródło
Serwer Microsoft Sql,
826786 * bajtów* Przypomniałem o funkcji IIF, która została wprowadzona w Microsoft Sql Server 2012
Sprawdź to online
Bardziej schludne formatowanie
źródło
/*true*/
i/*false*/
komentarzy?Galaretka , 9 bajtów
Wypróbuj online!
Jak to działa
źródło
PHP 114 bajtów
Bardziej czytelna wersja:
Wypróbuj online!
Użyłem tego do liczenia bajtów.
źródło