Écrivez un programme ou une fonction dans n'importe quelle langue qui indique si l'entrée est un nombre premier.
- L'entrée est une chaîne représentant un nombre naturel en base-10.
- La sortie est l'une des deux chaînes "Prime" ou "Not !!" qui identifie correctement l'entrée.
- Les opérateurs arithmétiques, les opérateurs bit à bit, les variables et constantes numériques, les "math-stuff" en général, etc ... ne sont autorisés nulle part dans votre programme. Vous devez utiliser des opérations de chaîne pour effectuer tous les "calculs" nécessaires.
- Vous pouvez comparer les longueurs de chaîne (qui sont des nombres) - mais -10 à votre score si vous ne le faites pas.
- Votre programme devrait fonctionner sur n'importe quelle entrée de longueur (avec suffisamment de mémoire et de temps).
- Le nombre d'octets le plus bas (UTF-8) l'emporte.
code-challenge
string
primes
Wally
la source
la source
Réponses:
Rubis, 64-10 = 54
Cela itère de la chaîne '1' (plus une nouvelle ligne) à la chaîne d'entrée, en utilisant la méthode d'itération de chaîne intégrée de Ruby qui ressemble énormément à l'ajout de 1, mais qui ne crée techniquement aucune variable numérique de haut niveau à aucun moment . Il utilise le fait qu'il y aura n itérations pour une entrée de n pour créer une chaîne de longueur n, puis utilise une expression régulière pour déterminer si cette chaîne peut être regroupée en sous-chaînes identiques.
la source
Rubis: 52-10 = 42
En utilisant une variation de cette fameuse expression rationnelle d'appariement premier.
Juste pour être clair:
?_*gets.to_i
est une opération de chaîne qui s'ajoute"_"
à elle-même n fois, où n est le numéro d'entrée. Comme je le vois, aucune longueur de chaîne n'est comparée, ce qui devrait satisfaire au critère de bonus de 10 caractères.la source
Arithmetic operators, bit-wise operators, numeric variables and constants
, et vous ne pouvez pas vraiment classer l'appel d'une méthode comme"math-stuff" in general
..?Perl 52-10 = 42
la mise en oeuvre
Démo
la source
pop
place de$ARGV[0]
, enregistrez 4 caractères, supprimez l'index du tableau numériqueECMAScript 6, 159 - 10 = 149
Sonne comme une tâche pour regex. E / S avec
prompt
/alert
comme d'habitude.La boucle while décrémente le nombre décimal d'une unité à chaque itération uniquement par l'expression régulière. Le regex final correspond à une chaîne composée d'un nombre composé de x, en faisant d'abord correspondre un facteur, puis un autre en répétant le premier facteur un pour le reste de la chaîne.
la source
Javascript 266
Crée une fonction appelée N qui imprimera le résultat souhaité. La version non réduite ressemble à ceci. J'ai fait une minification de la main pour nettoyer certaines variables, puis j'ai exécuté cela à travers uglify, puis à nouveau minifié à la main.
Testé à l'aide de cet extrait:
la source
Bash 66 - 10 = 56
la mise en oeuvre
Démo
la source
Python 3, 109-10 = 89
Pas de comparaison de longueurs de chaîne, mais d'inclusion de chaîne. Croix postée à partir d'un doublon Déterminer si un nombre est premier sans utiliser d'arithmétique
la source