Escriba un programa o función en cualquier idioma que indique si la entrada es un número primo.
- La entrada es una cadena que representa un número natural en base-10.
- La salida es una de las dos cadenas "Prime" o "Not !!" que identifica correctamente la entrada.
- No se permiten operadores aritméticos, operadores de bits, variables numéricas y constantes, "cosas matemáticas" en general, etc. en ningún lugar de su programa. Debe usar operaciones de cadena para hacer todos los "cálculos" necesarios.
- Puede comparar longitudes de cadena (que son números), pero -10 a su puntaje si no lo hace.
- Su programa debería funcionar en cualquier entrada de longitud (con suficiente memoria y tiempo).
- El conteo de bytes más bajo (UTF-8) gana.
code-challenge
string
primes
Criajo
fuente
fuente
Respuestas:
Rubí, 64-10 = 54
Esto itera desde la cadena '1' (más una nueva línea) a la cadena de entrada, utilizando el método de iteración de cadena incorporado de Ruby que se parece mucho a sumar 1, pero que técnicamente no crea una variable numérica de alto nivel en ningún punto . Utiliza el hecho de que habrá n iteraciones para una entrada de n para crear una cadena de longitud n, luego usa una expresión regular para determinar si esa cadena se puede agrupar en subcadenas idénticas.
fuente
Rubí: 52-10 = 42
Usando una variación de esa famosa expresión regular de coincidencia de primos.
Para ser claros:
?_*gets.to_i
es una operación de cadena que se agrega"_"
a sí misma n veces, donde n es el número de entrada. Como lo veo, no se comparan las longitudes de cadena, por lo que debería satisfacer el criterio de bonificación de 10 caracteres.fuente
Arithmetic operators, bit-wise operators, numeric variables and constants
, y realmente no puede clasificar llamando a un método como"math-stuff" in general
...Perl 52-10 = 42
Implementación
Manifestación
fuente
pop
lugar de$ARGV[0]
, guarde 4 caracteres, elimine el índice de matriz numéricaECMAScript 6, 159-10 = 149
Suena como una tarea para expresiones regulares. E / S con
prompt
/alert
como siempre.El ciclo while disminuye el número decimal en uno cada iteración únicamente por expresiones regulares. La expresión regular final coincide con una cadena que consiste en un número compuesto de x, primero haciendo coincidir un factor, luego otro repitiendo el primer factor uno para el resto de la cadena.
fuente
Javascript 266
Crea una función llamada N que imprimirá el resultado deseado. La versión no minificada se ve así. Hice un minify manual para limpiar algunas variables y luego lo ejecuté a través de uglify y luego lo minificó a mano nuevamente.
Probado con este fragmento:
fuente
Golpe 66-10 = 56
Implementación
Manifestación
fuente
Pitón 3, 109-10 = 89
No se comparan longitudes de cadena, sino inclusión de cadena. Cruzado publicado desde duplicado Determine si un número es primo sin usar aritmética
fuente