Escreva um programa ou função em qualquer idioma que diga se a entrada é um número primo.
- A entrada é uma sequência que representa um número natural na base 10.
- A saída é uma das duas strings "Prime" ou "Not !!" que identifica corretamente a entrada.
- Operadores aritméticos, operadores bit a bit, variáveis e constantes numéricas, "coisas matemáticas" em geral, etc ... não são permitidos em nenhum lugar do seu programa. Você deve usar operações de string para fazer todos os "cálculos" necessários.
- Você pode comparar comprimentos de string (que são números) - mas -10 à sua pontuação, se não o fizer.
- Seu programa deve funcionar com qualquer entrada de comprimento (com tempo e memória suficientes).
- A menor contagem de bytes (UTF-8) vence.
code-challenge
string
primes
Wally
fonte
fonte
Respostas:
Ruby, 64 - 10 = 54
Isso itera da string '1' (mais uma nova linha) para a string de entrada, usando o método de iteração de string incorporado do Ruby, que se parece muito com a adição de 1, mas que tecnicamente não cria uma variável numérica de alto nível a qualquer momento . Ele usa o fato de que haverá n iterações para uma entrada de n para criar uma cadeia de comprimento n e, em seguida, usa uma expressão regular para determinar se essa cadeia pode ser agrupada em substrings idênticos.
fonte
Ruby: 52 - 10 = 42
Usando uma variação desse famoso regex de correspondência principal.
Só para ficar claro:
?_*gets.to_i
é uma operação de cadeia que anexa"_"
a si mesma n vezes, onde n é o número de entrada. A meu ver, não são comparados comprimentos de cadeia, o que deve satisfazer o critério de bônus de 10 caracteres.fonte
Arithmetic operators, bit-wise operators, numeric variables and constants
e você não pode realmente classificar a chamada de método como"math-stuff" in general
..?Perl 52-10 = 42
Implementação
Demo
fonte
pop
, em vez de$ARGV[0]
, excepto 4 caracteres, remover numérica índice de matrizECMAScript 6, 159 - 10 = 149
Soa como uma tarefa para regex. E / S com
prompt
/alert
como de costume.O loop while diminui o número decimal em um a cada iteração puramente por regex. O regex final corresponde a uma sequência que consiste em um número composto de x, correspondendo primeiro um fator e, em seguida, outro, repetindo o primeiro fator um para o restante da sequência.
fonte
Javascript 266
Cria uma função chamada N que imprime o resultado desejado. A versão não compactada fica assim. Eu fiz um hand minify para limpar algumas variáveis e, em seguida, executei o uglify e depois o hand minify novamente.
Testei usando este trecho:
fonte
Festança 66 - 10 = 56
Implementação
Demo
fonte
Python 3, 109-10 = 89
Não comparando comprimentos de string, mas inclusão de string. Postagem cruzada de duplicado Determine se um número é primo sem usar aritmética
fonte