Kolejna sekwencja, kolejne wyzwanie. *
Definicja
Doskonałym p
jest w tej sekwencji, nazwijmy to A
, MFF dla każdej cyfry d
w p
„s ekspansji dziesiętnych, zamienić d
z d
kopiami d
i uzyskaną liczbą całkowitą jest nadal podstawowym; zera są niedozwolone.
Na przykład 11
jest trywialnie w tej sekwencji (nawiasem mówiąc, jest to pierwsza liczba). Następny w kolejności jest 31
, ponieważ 3331
jest także liczbą pierwszą; Następnie 53
, ponieważ 55555333
to również pierwsza, i tak dalej.
Wyzwanie
Biorąc pod uwagę dane wejściowe n
, return A(n)
, tj. n
Th element w tej sekwencji.
Przykłady
Oto pierwsze 20 warunków na początek. To jest A057628 w OEIS.
11, 31, 53, 131, 149, 223, 283, 311, 313, 331, 397, 463, 641, 691, 937, 941, 1439, 1511, 1741, 1871
To oznacza A(0) = 11
, A(1) = 31
itp, przy użyciu zerowy indeksowanie.
Zasady
- Możesz wybrać indeksowanie zerowe lub oparte na jednym; w odpowiedzi proszę podać, które.
- Zamiast zwracać tylko ten
n
element, możesz zamiast tego zwrócić pierwszen
warunki. - Możesz założyć, że wejście / wyjście nie będzie większe niż natywny format liczb całkowitych twojego języka; jednak liczba pierwsza z powtarzającymi się cyframi może być większa niż format macierzysty Twojego języka, więc trzeba to uwzględnić.
- Na przykład
1871
ostatnia liczba przykładów ma odpowiadającą liczbę pierwszą18888888877777771
, która jest nieco większa niż standardowa INT32. - Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Dane wyjściowe mogą być wysyłane do konsoli, zwracane z funkcji, wyświetlane w wyskakującym oknie alarmowym itp.
- 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).
* Szczerze mówiąc, wymyśliłem kilka pierwszych elementów sekwencji, po prostu bawiłem się pewnymi liczbami, a potem poszedłem do OEIS, aby uzyskać resztę sekwencji.
źródło
169
sam nie jest liczbą pierwszą, jest13 * 13
.Odpowiedzi:
Łuska , 15 bajtów
Wypróbuj online!
Erik the Outgolfer zapisał bajt. Użycie
ṗ
zamiastεp
zaoszczędziłoby kolejny bajt, ale powoduje to, że program jest tak wolny, że razy nasz parzysty dla n = 2.źródło
ṗ
w05AB1E ,
1413 bajtów-1 bajt dzięki Emignie !
Wypróbuj online!
Wyjaśnienie
źródło
Galaretka ,
1814 bajtówWypróbuj online!
Pan Xcoder: -1 bajtów (wszystko logiczne)
Erik the Outgolfer: -2 bajty (jedna linia zamiast dwóch)
HyperNeutrino: -1 bajt (zwraca pierwsze n elementów sekwencji)
Wyjaśnienie
Edycja: pierwotnie przesłał odpowiedź, która zawierała cyfry 0 w reprezentacji dziesiętnej, co jest szczególnie niedozwolone.
źródło
Wolfram Language (Mathematica) , 100 bajtów
Wypróbuj online!
Jonathan Frech zapisał 3 bajty
i -7 bajtów od JungHwan Min
-15 bajtów od Martina Endera
również dzięki Jenny Mathy
źródło
Alice ,
7270666256 bajtówDzięki Leo za oszczędność 5 bajtów.
Wypróbuj online!
Wykorzystuje dane wejściowe 1.
Wyjaśnienie
Najładniejsza sztuczka golfowa tutaj (mimo że pozwala zaoszczędzić tylko kilka bajtów) polega na tym, że używam testu pierwotności, który daje
0
dla kompozytów n dlan
kompozytów n . W ten sposób nie musimy używać wyniku warunkowo bezpośrednio, ale możemy przekazać go bezpośrednio do następnej części, która sprawdza, czy dane wejściowe nie zawierają zer.źródło
Python 2 , 130 bajtów
Wypróbuj online!
Python 2 ,
195179167140138136135134 bajtówxrange
zamiastrange
, omijanie w ten sposóbMemoryError
i kompaktowanie funkcji podstawowej; poprawa zliczania indeksu liczb całkowitych.|
celu zaoszczędzenia bajtówor
.~-
zamiast0**
odwrócić istnienie zera wj
,&
po którym następuje prawdziwa wartość logiczna izoluje właściwość logiczną tej wartości.~-A&B&C
(odpowiednik(not A) and B and C
) zA, B, C
bycia booleanamiA<B==C
.Wypróbuj online! (1-indeksowany)
Wyjaśnienie
Definiuje główną funkcję,
f
która przyjmuje indeks liczb całkowitychn
i domyślnie ustawioną wartośćj
, bieżącą sekwencję candify (inicjowaną w9
celu poprawy wydajności przy jednoczesnym zachowaniu wielkości programu) oraz funkcję sprawdzania liczby pierwszej.Tak długo, jak
n
niezerowa,n
-ta pozycja sekwencji nie została jeszcze znaleziona. Wj
ten sposób zwiększa się in
zmniejsza o jeden iffj
jest liczbą, która spełnia wymagane właściwości.Kiedy pętla się kończy,
j
jest ton
-ty wpis sekwencji i w ten sposób drukowany.źródło
Pyth , 21 bajtów
Wypróbuj tutaj!
Długo, ponieważ Pyth nie ma wbudowanego rozszerzenia dziesiętnego .
.f
), które:.AKjZT
) i (&
) ...*VK`Z
), połączonych razem i przekonwertowanych na liczbę całkowitą (ss
) to liczba pierwsza (P_
) i (&
) ...P_
).źródło
e
zgodnie z nową poprawką do reguły.Perl 6 , 51 bajtów
Wypróbuj online!
grep {...}, 2..*
filtruje nieskończoną sekwencję liczb naturalnych, zaczynając od 2, używając funkcji predykatu między nawiasami klamrowymi.(...)[$_]
indeksuje do tej filtrowanej listy za pomocą argumentu funkcji$_
.!/0/
odfiltrowuje liczby zawierające cyfrę zero.S:g/./{$/ x $/}/
replikuje każdą cyfrę w rozwinięciu dziesiętnym numeru testu.is-prime $_ & S:g/./{$/ x $/}/
wywołuje funkcję wbudowanąis-prime
z łączeniem$_
, numerem testu i liczbą wynikającą z replikacji jego cyfr. Funkcja zwróci true, jeśli obaj członkowie skrzyżowania i są pierwszymi.źródło
J, 81 bajtów
Jest to jedna z tych sytuacji, dla których nie znalazłem jeszcze dobrego rozwiązania J.
Niemniej jednak zamieszczam to w nadziei, że nauczę się czegoś nowego.
f
informuje nas, czy dana liczba jest „liczbą pierwszą powtarzającą się”. Rozkłada się w następujący sposób:I wreszcie główny Do ... Chociaż czasownik, z jego nieznośnym, pozornie nieuniknionym szablonem, który wynika z faktu, że musimy używać listy do przechowywania naszych postępów, która wymaga rejestrowania zarówno „bieżącej liczby pierwszej”, jak i „dotychczas znalezionej” , ponieważ nasz lewy argument jest już zajęty do przechowywania warunku zatrzymania, tj
n
. Oznacza to, że musimy użyć wielu cennych bajtów do prostego zadania podania argumentów ([
i]
) i rozpakowania naszej listy 2 elementów ({.
i{:
):Wypróbuj online!
źródło
f
funkcji pomocnika owiniętej w nawiasy. Próbowałem też grać w golfa w funkcji pomocnika i wymyśliłem1 p:('x',~"."0#])&.":
, co niestety nie wyklucza liczb pierwszych z „0” w nich. Czy masz jakieś przemyślenia? Musi też mieć tę'x',~
część, by uzyskać dodatkową precyzję ...(((0>.-)((*&(1&p:)0&e.|10#.#~),.&.":))([,(+*)~)])/^:_@,&2
, użyj,10x
aby rozszerzyć zakres, w przeciwnym razie n = 15 pominie 937