Une chaîne Primenary ( binary-prime ) est une chaîne qui, lorsqu'elle est écrite sous forme de grille binaire, chaque ligne et colonne a un total premier.
C'est une explication assez vague, alors décomposons-la avec un exemple concret ...
Pour cet exemple, nous utiliserons la chaîne bunny
:
Tout d'abord, trouvez le point de code ASCII de chaque caractère et sa représentation binaire:
Char | ASCII | Binary
b 98 1100010
u 117 1110101
n 110 1101110
n 110 1101110
y 121 1111001
Prenez ces valeurs binaires, de haut en bas, et organisez-les dans la grille (en ajoutant des zéros de tête si nécessaire):
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
Ensuite, comptez le nombre de 1
s dans chaque ligne et colonne:
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
Si, et seulement si, chaque total est premier (comme ici), alors la chaîne est un nombre binaire premier valide.
Le défi
Votre tâche consiste à créer une fonction ou un programme qui, lorsqu'il reçoit une chaîne, retourne / sort truthy
si la chaîne est priménaire et falsy
autrement.
Règles / Détails
- Vous pouvez supposer que les caractères de la chaîne seront toujours dans la plage ASCII
33-126
(inclus). - La chaîne ne sera pas vide.
- Une chaîne priménaire n'a pas besoin d'avoir une longueur première - par exemple, elle
W1n*
est valide, malgré 4 caractères. - C'est du code-golf , donc la réponse la plus courte (en octets) l'emporte - mais toutes les soumissions sont les bienvenues.
- Les failles standard sont interdites.
Cas de test
'husband' -> True
'HOTJava' -> True
'COmPaTIBILE' -> True
'AuT0HACk' -> True
'PPCW' -> False
'code-golf' -> False
'C++' -> False
'/kD' -> False
'HI' -> False
'A' -> False
Il existe également un exemple Python fonctionnel, mais incroyablement verbeux sur repl.it, sur lequel vous pouvez tester votre solution.
False
pas?
0
et 1
ne sont pas premiers, et chaque chaîne d'entrée de 1 à 2 caractères contenant uniquement des caractères dans la plage donnée est garantie de contenir au moins un 0
ou 1
comme somme verticale. Vous devez ajouter des chaînes de 1 et 2 caractères comme cas de test.
false
. 2 entrées de caractères pourraient, mais pas dans la plage ASCII que nous utilisons, donc pour ce scénario, vous avez raison.
husband
c'était valide? Ou l'un d'eux? Grand problème cependant!