Einsame Primzahlen (wie ich sie nenne) sind Primzahlen, bei denen ein Zahlenraster mit der Breite angegeben ist w ≥ 3
und an die orthogonal oder diagonal keine anderen Primzahlen angrenzen.
Nehmen wir zum Beispiel dieses Raster, in dem w = 12
(fett hervorgehobene Striche):
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
Es ist zu erkennen, dass nur die beiden Primzahlen 103 und 107 keine orthogonal oder diagonal benachbarten Primzahlen haben. Ich habe einen Abschnitt übersprungen, weil es dort keine einsamen Primzahlen gibt. (außer 37, eigentlich)
Ihre Aufgabe ist es, bei zwei Eingaben w ≥ 3
und i ≥ 1
der ersten einsamen Primzahl in einem Zahlenraster mit der Breite zu bestimmen w
, wobei die einsame Primzahl größer oder gleich sein muss i
. Eingaben können in jedem vernünftigen Format erfolgen (auch als Zeichenfolgen). Es ist garantiert, dass es eine einsame Primzahl für die Breite geben wird w
.
Das Gitter wickelt sich nicht um.
Beispiele:
w i output
11 5 11
12 104 107
12 157 157
9 1 151
12 12 37
Da dies Codegolf ist , gewinnt der kürzeste Code!
w=12
nicht37
eine einsame Primzahl? Keine der sie umgebenden Zahlen -{25, 26, 38, 49, 50}
- sind Primzahlen.Antworten:
C (GCC) ,
159158149 BytesProbieren Sie es online!
quelle
JavaScript (ES6),
116104 BytesÜbernimmt Eingaben in der Currying-Syntax
(w)(i)
.Testfälle
Code-Snippet anzeigen
Kommentiert
quelle
Python 2 , 144 Bytes
Probieren Sie es online!
Argumente in der Reihenfolge:
w
,i
.Hier werden keine externen Module verwendet.
Python 2 + Sympy, 127 Bytes
Probieren Sie es online!
Kein anderer Beitrag würdig, da der einzige Unterschied darin besteht, dass
sympy.isprime
anstelle einer manuell implementierten Prime-Check-Funktion verwendet wird.quelle
MATL , 38 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
Der Code besteht im Wesentlichen aus einer Schleife, die das in der Challenge beschriebene Gitter bei jeder Iteration um eine Zeile vergrößert.
Nachdem das Gitter bei jeder Iteration erstellt wurde, wird die letzte Zeile entfernt (wir können nicht wissen, ob diese Primzahlen einsam sind oder nicht) und die verbleibenden Zahlen werden getestet, um festzustellen, ob mindestens eine einsame Primzahl existiert. Dies erfolgt über eine 2D-Faltung.
Wenn es eine einsame Primzahl gibt, verlassen wir die Schleife und geben die erste solche Primzahl aus. Andernfalls fahren wir mit der nächsten Iteration fort, bei der ein größeres Gitter verwendet wird.
(Der Code verwendet tatsächlich eine transponierte Version des Rasters, die durch Spalten anstelle von Zeilen vergrößert wird.)
quelle
Julia 0,6, 135 Bytes
TIO hat das
Primes
Paket nicht. Es ist 5 Bytes kürzer , wenn ich darf alle einsamen Primzahlen zurückzukehren (findfirst
wirdfind
). Julias Versuch, die Funktionalität zuBase
verbessern, schadet dem Golfen (kein Ziel von Julia) undPrimes
wurde in 0.4 aufgenommen.Ungolfed (meistens)
quelle
Gelee , 20 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Perl 6 ,
113104 BytesProbieren Sie es online!
quelle
Sauber ,
181... 145 BytesProbieren Sie es online!
Ungolfed:
quelle
Gelee ,
3029 BytesIch vermute, das ist wahrscheinlich mit einem fairen Abstand zu übertreffen
i
Links undw
rechts eine dyadische Verbindung, die den einsamen Prim zurückgibt.Probieren Sie es online!
Wie?
quelle
Java 8, 176 Bytes
Port of Jonathan Frech 'C antworten .
Probieren Sie es online aus.
quelle