Zastanów się nad liczbą 99999999. Liczba ta jest oczywiście palindromem. Największy czynnik pierwszy wynoszący 99999999 wynosi 137. Jeśli podzielisz 99999999 przez 137, otrzymasz 729927. Liczba ta jest również palindromem.
Największy czynnik pierwszy wynoszący 729927 wynosi 101. 729927/101 = 7227, co znowu jest palindromem.
Największy czynnik pierwszy wynoszący 7227 wynosi 73. 7227/73 = 99, co znowu jest palindromem.
Przez dalsze dzielenie przez największy czynnik pierwszy, otrzymujesz 9, 3 i ostatecznie 1, które, będąc liczbami jednocyfrowymi, są również palindromami. Ponieważ 1 nie ma czynników pierwszych, procedura kończy się tutaj.
Teraz uogólniając to spostrzeżenie, definiuję super-palindrom jako palindrom, który ma wartość 1 lub daje inny super-palindrom, jeśli jest podzielony przez jego największy czynnik pierwszy.
Kredyty: /math/200835/are-there-infinitely-many-super-palindromes
Biorąc pod uwagę liczbę N , określ, czy jest to superpalindrom, czy nie, i wydrukuj odpowiednio wartość prawdy lub falseya.
Twój program powinien wydrukować prawdziwą wartość dla tych danych wejściowych:
1
101
121
282
313
353
373
393
474
737
919
959
1331
1441
2882
6446
7887
8668
9559
9779
Twój program powinien wydrukować wartość falsey dla tych danych wejściowych:
323
432
555
583
585
646
642
696
777
969
989
2112
3553
4554
5242
5225
5445
8080
8118
9988
Pamiętaj, że to jest gra w golfa , więc wygrywa kod z najmniejszą ilością bajtów.
źródło
N
zawsze będą palindromem na początek?Odpowiedzi:
Galaretka ,
131298 bajtówWypróbuj online! lub zweryfikuj wszystkie przypadki testowe .
Jak to działa
źródło
Mathematica, 64 bajty
Funkcja bez nazwy, zwracana
True
lubFalse
. Tworzy listę, zaczynając od wejścia, a następnie iterując funkcję „ja podzielony przez mój największy współczynnik pierwszy”, aż wynik się nie zmieni. (Na szczęście Mathematica uważa teraz, że największy czynnik pierwszy wynoszący 1 wynosi 1.) Następnie sprawdza, czy wpisy na liście są palindromami (tak, wbudowane! Długość nazwy funkcji boo!) IAnd
s je wszystkie razem.źródło
FactorInteger[1]
osobliwości zFixedPoint
Mathematica, 51 bajtów
Rekurencyjna anonimowa funkcja. Pobiera liczbę jako dane wejściowe i zwraca
True
lubFalse
dane wyjściowe.źródło
05AB1E ,
98 bajtówOszczędność bajtu dzięki Adnanowi .
Wypróbuj online!
Wyjaśnienie
n = 7227
użyty jako przykładźródło
Ò.pPDíïQ
również powinien działać.Pyth -
1512 bajtówPokonaj galaretkę: P: /Niestety, wszystkie te niejawne mapy nie stają się krótsze, gdy są połączone w wyraźną, ponieważ ostatnia jest auto-splat.
Pakiet testowy .
Pobiera wszystkie prefiksy pierwszej faktoryzacji, których produktami będą pośrednie superpalindromy i sprawdza, czy wszystkie z nich są palindromami.
źródło
Mathematica,
7163 bajtówWyjaśnienie
Uwzględnij dane wejściowe. (np.
8668 -> {{2, 2}, {11, 1}, {197, 1}}
dla każdej listy w danych wyjściowych pierwszym elementem jest czynnik pierwszy, a drugim moc.Dla każdej pary czynnik-moc powiel pierwszy element przez drugi element i spłaszcz całą rzecz. (
{{2, 2}, {11, 1}, {197, 1}} -> {{2, 2}, {11}, {197}} -> {2, 2, 11, 197}
)Iteruj po liście, mnożąc elementy. (
{2, 2, 11, 197} -> {2, 2 * 2, 2 * 2 * 11, 2 * 2 * 11 * 197} -> {2, 4, 44, 8668}
)Sprawdź, czy wszystkie wynikowe liczby są palindromami, i zastosuj
And
operator. ({2, 4, 44, 8668} -> {True, True, True, True}
->True
)źródło
Brachylog , 14 bajtów
Wypróbuj online!
Wyjaśnienie
To implementuje formułę wyjaśnioną w opisie wyzwania.
Obliczenie wszystkich produktów sufiksów pierwszego rozkładu i sprawdzenie, czy wszystkie są palindromami, trwa 1 bajt dłużej (
1|$p:@]f:{*.r}a
).źródło
Rakieta 238 bajtów
Nie golfowany:
Testowanie:
Wydajność:
źródło
palin
miała pięciobajtową nazwę?J, 30 bajtów
Błąd dla falsey, 1 dla prawdy.
Pierwsza próba, nie błędu dla falsey, 40 bajtów:
Wyjaśnienie
Przypadki testowe
źródło
아희 (Aheui) , 309 bajtów (100 znaków * 3 bajty + 9 znaków nowej linii)
Jestem tak szczęśliwy, że właściwie to skończyłem!
Jestem nowy w tym języku, więc mile widziane są wszelkie wskazówki dotyczące zwiększania liczby bajtów.
Wypróbuj tutaj! (skopiuj i wklej kod)
Wersja czystsza
źródło
Scala, 138 bajtów
Nie golfowany:
Wyjaśnienie:
źródło
JavaScript (ES6), 78 bajtów
Rekurencyjnie buduje główne prefiksy faktoryzacji i sprawdza je pod kątem palindromiczności.
źródło
Java 7, 133 bajty
Bez golfa
źródło
Tak właściwie 29 bajtów
Prawdopodobnie istnieje kilka sekcji tego kodu, które można by zagrać w golfa, choć nie jestem jeszcze pewien, gdzie. Sugestie dotyczące gry w golfa mile widziane. Wypróbuj online!
Ungolfing
źródło