Łańcuch Primenary ( binary-prime ) to taki, który zapisany jako siatka binarna ma każdy pierwszy wiersz i kolumnę.
To dość niejasne wyjaśnienie, więc podzielmy to na działający przykład ...
W tym przykładzie użyjemy ciągu bunny
:
Najpierw znajdź punkt kodowy ASCII każdego znaku i jego reprezentację binarną:
Char | ASCII | Binary
b 98 1100010
u 117 1110101
n 110 1101110
n 110 1101110
y 121 1111001
Weź te wartości binarne, od góry do dołu i ustaw je w siatce (w razie potrzeby dodając zera na początku):
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
Następnie policz liczbę 1
s w każdym wierszu i kolumnie:
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
Jeśli i tylko jeśli każda suma jest liczbą pierwszą (jak tutaj), to ciąg jest poprawną liczbą pierwszą binarną.
Wyzwanie
Twoim zadaniem jest stworzenie funkcji lub programu, który otrzyma ciąg znaków, który zwróci / wyprowadzi, truthy
jeśli ciąg jest pierwotny, i falsy
inaczej.
Zasady / Szczegóły
- Możesz założyć, że znaki ciągu będą zawsze w zakresie ASCII
33-126
(włącznie). - Ciąg nie będzie pusty.
- Pierwotny ciąg nie musi mieć liczby pierwszej - na przykład
W1n*
jest prawidłowy, mimo że ma 4 znaki. - To jest golf golfowy , więc wygrywa najkrótsza odpowiedź (w bajtach) - ale wszystkie zgłoszenia są mile widziane.
- Standardowe luki są zabronione.
Przypadki testowe
'husband' -> True
'HOTJava' -> True
'COmPaTIBILE' -> True
'AuT0HACk' -> True
'PPCW' -> False
'code-golf' -> False
'C++' -> False
'/kD' -> False
'HI' -> False
'A' -> False
Istnieje również działający, ale niezwykle szczegółowy przykład Pythona na repl.it , na którym możesz przetestować swoje rozwiązanie.
False
, prawda?
0
i 1
nie są liczbami pierwszymi, a każdy łańcuch wejściowy 1-2 znaków zawierający tylko znaki z podanego zakresu gwarantuje co najmniej jeden 0
lub 1
jako sumę pionową. Powinieneś dodać 1 i 2 ciągi znaków jako przypadki testowe.
false
. 2 dane wejściowe char mogą, ale nie w stosowanym przez nas zakresie ASCII, więc w tym scenariuszu masz rację.
husband
było ważne? A może któryś z nich? Ale wielki problem!