Eine Primary - Zeichenfolge ( binäre Primzahl ) ist eine Zeichenfolge, bei der jede Zeile und Spalte eine Primzahlsumme aufweist, wenn sie als binäres Gitter geschrieben wird.
Das ist eine ziemlich vage Erklärung, also lasst es uns mit einem ausgearbeiteten Beispiel aufschlüsseln ...
In diesem Beispiel verwenden wir die Zeichenfolge bunny
:
Ermitteln Sie zunächst den ASCII-Codepunkt jedes Zeichens und seine Binärdarstellung:
Char | ASCII | Binary
b 98 1100010
u 117 1110101
n 110 1101110
n 110 1101110
y 121 1111001
Nehmen Sie diese Binärwerte von oben nach unten und ordnen Sie sie in einem Raster an (fügen Sie gegebenenfalls führende Nullen hinzu):
1 1 0 0 0 1 0
1 1 1 0 1 0 1
1 1 0 1 1 1 0
1 1 0 1 1 1 0
1 1 1 1 0 0 1
Zählen Sie dann die Anzahl von 1
s in jeder Zeile und Spalte:
1 1 0 0 0 1 0 > 3
1 1 1 0 1 0 1 > 5
1 1 0 1 1 1 0 > 5
1 1 0 1 1 1 0 > 5
1 1 1 1 0 0 1 > 5
v v v v v v v
5 5 2 3 3 3 2
Wenn und nur wenn jede einzelne Summe eine Primzahl ist (wie hier), dann ist die Zeichenfolge eine gültige Binärprimzahl.
Die Herausforderung
Ihre Aufgabe ist es, eine Funktion oder ein Programm zu erstellen, die bzw. das bei Angabe eines Strings zurückgibt / ausgibt, truthy
wenn der String primär ist, falsy
andernfalls.
Regeln / Details
- Sie können davon ausgehen, dass die Zeichen der Zeichenfolge immer im ASCII-Bereich
33-126
(einschließlich) liegen. - Die Zeichenfolge wird nicht leer sein.
- Ein Primary-String muss keine Primlänge haben - ist beispielsweise
W1n*
gültig, obwohl er 4 Zeichen hat. - Das ist Code-Golf , also gewinnt die kürzeste Antwort (in Bytes) - aber alle Einsendungen sind willkommen.
- Standardlücken sind verboten.
Testfälle
'husband' -> True
'HOTJava' -> True
'COmPaTIBILE' -> True
'AuT0HACk' -> True
'PPCW' -> False
'code-golf' -> False
'C++' -> False
'/kD' -> False
'HI' -> False
'A' -> False
Es gibt auch ein funktionierendes, aber unglaublich ausführliches Python-Beispiel für repl.it , anhand dessen Sie Ihre Lösung testen können.
False
, richtig?
0
und 1
keine Primzahlen sind und jeder 1-2-Zeichen-Eingabe-String, der nur Zeichen im angegebenen Bereich enthält, garantiert mindestens eine 0
oder 1
eine vertikale Summe enthält. Sie sollten 1 und 2 Zeichenketten als Testfälle hinzufügen.
false
. 2 Zeicheneingänge könnten, aber nicht in dem von uns verwendeten ASCII-Bereich, verwendet werden. In diesem Szenario sind Sie also richtig.
husband
gültig ist? Oder einer von ihnen? Tolles Problem!