Schreiben Sie ein Programm oder eine Funktion in einer beliebigen Sprache, die angibt, ob die Eingabe eine Primzahl ist.
- Die Eingabe ist eine Zeichenfolge, die eine natürliche Zahl in der Basis 10 darstellt.
- Die Ausgabe ist eine der beiden Zeichenfolgen "Prime" oder "Not !!" die die Eingabe korrekt identifiziert.
- Arithmetische Operatoren, bitweise Operatoren, numerische Variablen und Konstanten, "math-stuff" im Allgemeinen usw. sind an keiner Stelle in Ihrem Programm zulässig. Sie sollten Zeichenfolgenoperationen verwenden , um alle erforderlichen "Berechnungen" durchzuführen .
- Sie können Stringlängen (Zahlen) vergleichen, aber -10 mit Ihrer Punktzahl, wenn Sie dies nicht tun.
- Ihr Programm sollte mit Eingaben beliebiger Länge (bei genügend Arbeitsspeicher und Zeit) arbeiten.
- Die niedrigste Bytezahl (UTF-8) gewinnt.
code-challenge
string
primes
Wally
quelle
quelle
Antworten:
Ruby, 64 - 10 = 54
Dies iteriert von der Zeichenfolge '1' (plus einer neuen Zeile) zur Eingabezeichenfolge, wobei Rubys integrierte Zeichenfolgeniterationsmethode verwendet wird, die einer Addition von 1 sehr ähnlich sieht, aber technisch zu keinem Zeitpunkt eine übergeordnete numerische Variable erstellt . Es verwendet die Tatsache, dass es n Iterationen für eine Eingabe von n gibt, um eine Zeichenfolge mit n Längen zu erstellen, und verwendet dann einen regulären Ausdruck, um zu bestimmen, ob diese Zeichenfolge in identische Teilzeichenfolgen gruppiert werden kann.
quelle
Rubin: 52 - 10 = 42
Verwenden Sie eine Variation dieses berühmten Prime Matching Regex.
Nur um klar zu sein:
?_*gets.to_i
ist eine Zeichenfolgeoperation, die angehängt wird"_"
die n- mal an sich selbst , wobei n die eingegebene Zahl ist. Aus meiner Sicht werden keine Stringlängen verglichen, so dass das 10 Zeichen Bonuskriterium erfüllt sein sollte.quelle
Arithmetic operators, bit-wise operators, numeric variables and constants
Methoden und Sie können den Aufruf einer Methode nicht wirklich als ... klassifizieren"math-stuff" in general
.Perl 52-10 = 42
Implementierung
Demo
quelle
pop
stattdessen$ARGV[0]
, speichern Sie 4 Zeichen, entfernen Sie den numerischen Array-IndexECMAScript 6, 159-10 = 149
Klingt nach einer Aufgabe für Regex. I / O mit
prompt
/alert
wie gewohnt.Die while-Schleife dekrementiert die Dezimalzahl bei jeder Iteration nur durch Regex. Der endgültige reguläre Ausdruck entspricht einer Zeichenfolge, die aus einer zusammengesetzten Anzahl von x besteht, indem zuerst ein Faktor und dann ein weiterer Faktor für den Rest der Zeichenfolge abgeglichen wird.
quelle
Javascript 266
Erstellt eine Funktion mit dem Namen N, die das gewünschte Ergebnis ausgibt. Die ungekürzte Version sieht so aus. Ich habe eine Handminimierung durchgeführt, um einige Variablen zu bereinigen, und dann habe ich diese durch uglify ausgeführt und dann die Handminimierung erneut durchgeführt.
Getestet mit diesem Snippet:
quelle
Bash 66 - 10 = 56
Implementierung
Demo
quelle
Python 3, 109-10 = 89
Nicht die Länge von Strings vergleichen, sondern die Einbeziehung von Strings. Cross posted from duplicate Bestimmen Sie, ob eine Zahl eine Primzahl ist, ohne Arithmetik zu verwenden
quelle