Biorąc pod uwagę dużą liczbę (w bazie 10), taką jak 1234567891011121314151617, znajdź w niej „podnumery”.
Pierwsza „podnumer” to kolejna sekwencja cyfr (pobrana z wejścia), która reprezentuje liczbę pierwszą (w podstawie 10).
- Dane wejściowe : liczba (ciąg, plik lub cokolwiek chcesz).
- Dane wyjściowe : wszystkie główne liczby podrzędne są jakoś oddzielone (na liście, w pliku, ciągi oddzielone przecinkami ...) Jeśli wynik jest pusty, możesz zastosować dowolną konwencję (ciąg zakodowany na stałe, pusty ciąg, bełkot, ale program nie powinien wypadek.
- Przykład
1234 -> 2, 3, 23
6542 -> 5, 2
14 -> [.. pusty wynik]
To jest golf golfowy. Najkrótszy program wygrywa!
[edytuj]: dodatkowa reguła, program musi zostać wyjaśniony! Nie wszyscy mówią płynnie w galaretce :)
Odpowiedzi:
05AB1E (starsza wersja) , 3 bajty
Wypróbuj online!
Podciągi wejściowe, które są pierwsze.
źródło
Perl 6 , 28 bajtów
Wypróbuj online!
Flaga
:ex
(„wyczerpująca”) do operatora dopasowaniam
powoduje, że zwraca on każde możliwe dopasowanie.+
(tj. Każdy podciąg jednego lub więcej znaków), nawet te nakładające się. Hiperoperator+«
zamienia tę listęMatch
obiektów w liczby, które są następnie filtrowane pod kątem pierwotnościgrep &is-prime
.źródło
{+«m:ex/(.+)<?{$0.is-prime}>/}
Brachylog , 4 bajty
-1 bajt dzięki Kroppeb .
Wypróbuj online!
ᶠ
ind wszystkies
ubstrings,ˢ
wybieraṗ
Rimesźródło
sᶠṗˢ
jest o jeden bajt krótszy. Znajduje wszystkie podciągi i zwraca te, które są pierwsze. Zobacz tutaj codegolf.stackexchange.com/a/117871/81957Python 2 ,
6665 bajtówWypróbuj online!
źródło
while k<=n
lub, aby kosztować 0 bajtów,while~n+k
while
wyciągu? Nie widziałem wcześniej tego typu kodów. Nie widziałem też użycia `` , co robi?while stmt:
będzie działać tak długo, jak długostmt
ma wartość uznawaną przez python za prawdziwą. Jedyną liczbą całkowitą fałsz w Pythonie jest0
. Dlatego kod będzie działał jako~n+k != 0
.~
jest operatorem uzupełniania bitowego i~n
jest równoważny z-n - 1
.~n + k != 0
<=>-n - 1 + k != 0
<=>k != n + 1
. Ponieważ zwiększamyk
o1
każdą operację,k != n + 1
w tym przypadku jest równoważnek <= n
.`n`
jest taki sam jakrepr(n)
w Pythonie 2. (nie działa w Pythonie 3).Japt ,
1310 bajtówDzięki @Shaggy -3 bajtów
Wypróbuj online!
źródło
Galaretka ,
54 bajtów-1 dzięki Kevin Cruijssen (
Ẓ
jest pseudonimemÆP
)Monadyczny link akceptujący listę cyfr *, która daje listę liczb całkowitych pierwszych.
* przechodząc przez „ciąg, plik lub cokolwiek chcesz” - aby przyjąć liczbę całkowitą, poprzedz kod kodem
D
Wypróbuj online!
W jaki sposób?
źródło
ÆP
może być,Ẓ
jeśli się nie mylę?Java 8,
148147 bajtówWypróbuj online.
Wyjaśnienie:
źródło
MATL , 9 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Bash + GNU Core Utils:
8077 bajtówTo nie może być najkrótsze, ale mam problem z wymyśleniem czegoś lepszego. Potrzebna pomoc!
Trzymając się tylko POSIX, otrzymałem 82:
źródło
R , 60 bajtów
Wypróbuj online!
Niezbyt wydajny, zainspirowany odpowiedzią @ovs python 2
źródło
Python 2 ,
115114 bajtówWypróbuj online!
źródło
if~-n*all(n%i for i in range(2,n))
ratuje 4.Łuska , 5 bajtów
Wypróbuj online!
źródło
Czysty , 108 bajtów
Wypróbuj online!
źródło
Pyth, 8 bajtów
Zestaw testowy
Pobiera dane wejściowe jako ciąg znaków, wyświetla listę liczb całkowitych. Może również przyjmować dane wejściowe
Wyjaśnienie:int
, dodając`
na końcu dodatkowy bajt.I
`
po prostu konwertujeint
nastr
.źródło
Wolfram Language (Mathematica) , 40 bajtów
Wypróbuj online!
Dane wejściowe i wyjściowe są listami cyfr. W przypadku braku podnumerych zwracana jest pusta lista
{}
.Używa
@*
doComposition
funkcji.Subsequences
daje listę wszystkich podsekwencji danych wejściowych iSelect[PrimeQ@*FromDigits]
jest formą operatora,Select
która zwraca listę wszystkich elementów, dla którychPrimeQ@*FromDigits
zwracaTrue
.źródło
Matlab, 89 bajtów
Wypróbuj online!
źródło