プライマリ(binary-prime)文字列とは、バイナリグリッドとして記述されたときに、すべての行と列が総計を持つものです。
それはかなりあいまいな説明ですので、実際の例でそれを分解しましょう...
この例では、文字列を使用しますbunny
:
まず、各文字のASCIIコードポイントとそのバイナリ表現を見つけます。
Char | ASCII | Binary
b 98 1100010
u 117 1110101
n 110 1101110
n 110 1101110
y 121 1111001
これらのバイナリ値を上から下に取り、グリッドに配置します(必要に応じて先行ゼロを追加します)。
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
次に、1
各行と列のs の数をカウントします。
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
すべての合計が素数(ここなど)である場合にのみ、文字列は有効なバイナリ素数です。
チャレンジ
あなたの仕事は、文字列が与えられたときにtruthy
、その文字列が一次であればfalsy
それ以外の場合はそれを返す/出力する関数またはプログラムを作成することです。
ルール/詳細
- 文字列の文字は常にASCII範囲
33-126
(両端を含む)であると想定できます。 - 文字列は空になりません。
- プライマリ文字列はプライム長である必要はありません。たとえば、
W1n*
4文字であるにもかかわらず有効です。 - これはcode-golfであるため、最短の回答(バイト単位)が勝ちますが、すべての投稿を歓迎します。
- 標準的な抜け穴は禁止されています。
テストケース
'husband' -> True
'HOTJava' -> True
'COmPaTIBILE' -> True
'AuT0HACk' -> True
'PPCW' -> False
'code-golf' -> False
'C++' -> False
'/kD' -> False
'HI' -> False
'A' -> False
False
、が返されることが保証されていますか?
0
および1
は素数ではないため、指定された範囲内の文字のみを含む1〜2文字の入力文字列ごとに、少なくとも1つ0
または1
垂直方向の合計として保証されます。テストケースとして1文字と2文字の文字列を追加する必要があります。
false
ます。2文字の入力は可能ですが、使用しているASCIIの範囲ではないため、このシナリオでは正しいです。
husband
が有効であると発見したか尋ねることができますか?またはそれらのいずれか?しかし、大きな問題!