Liczby pojedyncze samotne (jak je nazywam) są liczbami pierwszymi, gdzie przy liczbowej siatce z szerokością w ≥ 3
są liczbami pierwszych, które nie mają żadnych innych liczb pierwszych sąsiadujących z nimi prostopadle lub po przekątnej.
Na przykład, jeśli weźmiemy tę siatkę, gdzie w = 12
(liczby pierwsze wyróżnione pogrubioną czcionką):
1 2 3 4 5 6 7 8 9 10 11 12
13 14 15 16 17 18 19 20 21 22 23...
...86 87 88 89 90 91 92 93 94 95 96
97 98 99 100 101 102 103 104 105 106 107 108
109 110 111 112 113 114 115 116 117 118 119 120
Widać, że tylko dwie liczby pierwsze 103 i 107 nie mają żadnych liczb pierwszych prostopadłych lub po przekątnych. Przeskoczyłem sekcję, ponieważ nie ma tam samotnych liczb pierwszych. (z wyjątkiem 37)
Twoim zadaniem jest, biorąc pod uwagę dwa dane wejściowe, w ≥ 3
i i ≥ 1
ustalić pierwszą samotną liczbę pierwszą w siatce liczb o szerokości w
, gdzie wspomniana samotna liczba pierwsza musi być większa lub równa i
. Dane wejściowe mogą być pobierane w dowolnym rozsądnym formacie (w tym przyjmowanie ich jako ciągów znaków). Jest gwarantowane, że będzie samotna pierwsza szerokość w
.
Siatka się nie zawija.
Przykłady:
w i output
11 5 11
12 104 107
12 157 157
9 1 151
12 12 37
Ponieważ jest to kod-golf , wygrywa najkrótszy kod!
w=12
nie37
jest samotną liczbą pierwszą? Żadna z otaczających go liczb -{25, 26, 38, 49, 50}
- nie jest liczbą pierwszą.Odpowiedzi:
C (gcc) ,
159158149 bajtówWypróbuj online!
źródło
JavaScript (ES6),
116104 bajtówPobiera dane wejściowe w składni curry
(w)(i)
.Przypadki testowe
Pokaż fragment kodu
Skomentował
źródło
Python 2 , 144 bajty
Wypróbuj online!
Argumenty w kolejności:
w
,i
.Nie użyto tutaj zewnętrznych modułów.
Python 2 + sympy, 127 bajtów
Wypróbuj online!
Nie wart innego postu, ponieważ jedyną różnicą jest to, że używa
sympy.isprime
zamiast ręcznie zaimplementowanej funkcji sprawdzania liczby pierwszych.źródło
MATL , 38 bajtów
Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie
Kod zasadniczo składa się z pętli, która ciągle powiększa siatkę, jak opisano w wyzwaniu, o jeden wiersz na każdej iteracji.
Po utworzeniu siatki przy każdej iteracji ostatni wiersz jest usuwany (nie wiemy, czy te liczby pierwsze są samotne, czy nie), a pozostałe liczby są testowane, aby sprawdzić, czy istnieje co najmniej jedna samotna liczba pierwsza. Odbywa się to poprzez splot 2D.
Jeśli jest jakaś samotna liczba pierwsza, wychodzimy z pętli i wypisujemy pierwszą taką liczbę pierwszą. W przeciwnym razie przejdziemy do następnej iteracji, która wypróbuje większą siatkę.
(Kod faktycznie używa transponowanej wersji siatki, która jest powiększana o kolumny zamiast o wiersze).
źródło
Julia 0.6, 135 bajtów
TIO nie ma
Primes
pakietu. Jest 5 bajtów krótszy, jeśli wolno mi zwrócić wszystkie samotne liczby pierwsze (findfirst
staje sięfind
). Próba wyjścia Julii z funkcjiBase
szkodzi golfowi (nie jest to cel Julii),Primes
została uwzględniona w 0.4.Niegolfowany (głównie)
źródło
Galaretka , 20 bajtów
Wypróbuj online!
Jak to działa
źródło
Perl 6 ,
113104 bajtówWypróbuj online!
źródło
Czysty ,
181... 145 bajtówWypróbuj online!
Nie golfowany:
źródło
Galaretka ,
3029 bajtówDomyślam się, że jest to prawdopodobnie możliwe do osiągnięcia z dość dużą marżą
Dyadyczne ogniwo łączące
i
lewą iw
prawą stronę, które zwraca samotną liczbę pierwszą.Wypróbuj online!
W jaki sposób?
źródło
Java 8, 176 bajtów
Port Jonathana Frech C odpowiedzieć " .
Wypróbuj online.
źródło