Satanás Primes
¿Quienes son?
que se Primescontienen 666
estos son Satanás-Primes: [46663,266677,666599,666683,616669]
estos son NO :[462667,665669,36363631,555]
Trama
Cada número mayor que 6661 tiene Satan-Primes detrás
El reto
Dado un número entero, n>6661encuentra a Satan-Prime detrás (o igual) y más cerca de sí mismo.
Ejemplos
Número entero n=30000tiene 3 Satanás-Primes (SP) detrás de él: [6661, 16661, 26669].
Su código debe devolver 26669cuál es el más cercano detrás de él
Casos de prueba
Entrada-> Salida
6662->6661
10000->6661
66697->66697 (a SP returns himself)
328765->326663
678987->676661
969696->966677
Reglas
Su código debería funcionar para cualquiera nen el rango de su idioma.
Este es el código de golf , por lo que gana la respuesta más corta en bytes.

output the nth satan primedesafío ...Respuestas:
Mathematica, 82 bytes
fuente
Neim , 9 bytes
Explicación:
Pruébalo en línea!
fuente
+6empuja 666? ¿O es Neim solo ese metal?+xsignifica 612 + código de caracteres dex. El código de6pasa a ser 54, entonces 612 + 54 = 666.'\+*=100,356,612,868(más el ordinal del siguiente personaje que es)Jalea ,
109 bytes¡Ahorrado 10% gracias a @Dennis!
Pruébalo en línea!
Explicación
fuente
ÆRẇ@Ðf666Ṁwdebería funcionar en lugar deẇ@.Pyth ,
1514 bytesGuardado 1 byte con la ayuda de Dave .
Errores de memoria para
969696y cualquier cosa superior en mi máquina, pero está bien si se le da suficiente memoria.Pruébalo aquí o echa un vistazo a Test Suite.
¿Cómo?
ef & / `T * 3 \ 6P_TSQ - Programa completo, con entrada implícita (Q) al final SQ - Rango [1, Q] f - Filtro. P_T - ¿Es primo? & - Y / `T * 3 \ 6 - Contiene 666. e - Último elemento. - Salida implícita del resultado.Pyth , 14 bytes
Pruébalo aquí!
fuente
ef&/`T*3\6P_TS"666"es una forma menos eficiente de describir la cadena 666 que*3\605AB1E , 11 bytes
Pruébalo en línea!
fuente
Bash + Core Utils,
5149 bytesToma el argumento de la línea de comando. Puede ser bastante lento con números más grandes.
fuente
|head -1al final.Mathematica,
64626153 bytes-1 byte gracias a @KellyLowder
-8 bytes (wow) gracias a @Notatree
Explicación
Toma una entrada. Lo decrementamos bajo estas condiciones:
la entrada no es primo, O
Los dígitos de las entradas no contienen tres 6s seguidos.
Repetimos eso hasta que se alcance un primer Satanás.
fuente
#//.i_/;!PrimeQ@i||ToString@i~StringFreeQ~"666":>i-1&Perl 5 , 47 bytes
46 bytes de código + 1 para
-pPruébalo en línea!
fuente
Japt , 14 bytes
Pruébalo
En vista de que no era un bono basado en el tiempo 50%: caso de prueba finaliza
969696en menos de medio segundo.Explicación
Entrada implícita de entero
U.Genere una matriz de enteros de
1aU.Filtrar (
f) primos.Marcha atrás.
Devuelve el primer elemento que devuelve un valor verdadero (en este caso
1) cuando se pasa por una función que comprueba si ...El entero convertido en una cadena (
s) contiene (ø) 666.Alternativa más rápida, 15 bytes
Una vez más, ya que originalmente había un bono basado en el tiempo, aquí hay una solución alternativa y mucho más rápida, que parece que no puedo seguir jugando.
Pruébalo
fuente
PowerShell , 128 bytes
Pruébalo en línea!
PowerShell no tiene incorporados factores de factorización primarios, por lo que toma prestado el código de mi respuesta en Prime Factors Buddies .
Tomamos información
$n, luego declaramos una nuevafunction fque calcula los factores de entrada$a. Si la entrada$aes primo, esto devolverá solo$a.La parte principal del programa es el
for()bucle infinito . Dentro del ciclo, verificamos si$n-matches contra666y si$nes primo (es decir,$ncoincide con todos los factores de$n). Si es así, lo colocamos$nen la tubería yexit, con salida implícita. De lo contrario, disminuimos$n--y continuamos el ciclo.fuente
Python 2 ,
7776 bytesEditar: -1 byte gracias a @ Mr.Xcoder
Tiempo de ejecución lento, corre en
O(n^2)Pruébalo en línea!
Otra solución de 76 bytes
Pruébalo en línea!
Con SymPy 73 bytes
Pruébalo en línea!
fuente
lambda x:max(q for q in range(x+1)if"666"in`q`*all(q%t for t in range(2,q)))- usar enmax()lugar de[][-1]PowerShell ,
716964 bytesPruébalo en línea!
328765 tarda ~ 30 segundos en mi máquina, pero agota el límite de 60 segundos en Tio.run.
678987 toma ~ 1.5 minutos.
fuente
MATL, 16 bytes
Pruébalo en MATL Online
Explicación
fuente
C ++ 389 bytes
Este es un programa completo!
Necesitarás Boost para compilarlo. (O copie y pegue en su shell favorito de C ++ en línea).
Ejecútelo desde la línea de comandos dando n como argumento.
Sin golf:
Los atajos se hicieron en términos de pruebas de números aleatorios. El código original comenzó a probar posibles primos en 6661 y se incrementó en dos. También recibirá una advertencia del compilador debido a eso (-1) allí en lugar de npos.
Aún así, esto funciona bastante rápido. Solo me llevó unos 40 segundos encontrar los 214 primos de Satanás por debajo de 1,000,000 en mi viejo AMD Sempron 130.
: ^ D
fuente
Paquete Bash + bsd-games, 33
Pruébalo en línea .
fuente
tail -n1.tailaquí. De hechotail -1es incluso 1 menos.Python 3 ,
85 8380 bytesHalvard es 4 bytes más corto porque se hace en Python 2.
Pruébalo en línea!
Dale algo de tiempo, es extremadamente lento debido a su
O(n^2)complejidad.fuente
JavaScript (ES6),
5554 bytes-1 byte gracias a @ThePirateBay.
Muy lento con grandes entradas. Prueba de primaria adaptada de esta respuesta de golf de código .
Tiempos
10000tomó 10 segundos328765tomó 3 minutos678987tomó 9 minutos969696tomó 16 minutosPruebas
Algunos de estos colgarán su navegador por varios minutos.
Mostrar fragmento de código
Versión más rápida, 56 bytes
Completa cada caso de prueba en menos de un segundo.
fuente
d==1pord<2desden>6661.f=n=>/666/.test(n)&(g=d=>n%--d?g(d):d<2)(n)?n:f(n-1)pero arrojará un error de recursión para números más grandes.f=n=>/666/.test(d=n)-eval("while(n%--d);d")?f(n-1):nRuby,
67,66,58, 56 bytesIncluye
+7bytes para-rprimeEs bastante rápido, calcula valores
~2^52en aproximadamente un segundo y2^64en menos de 5 minutos (2011 MBP, Ruby 2.3.1).fuente
Stax , 10 bytes
Ejecutar y depurarlo
Explicación (sin embalaje):
fuente
PHP , 148 bytes
Pruébalo en línea!
fuente
Perl 6 , 35 bytes
Pruébalo en línea!
Solución recursiva directa.
fuente
C # (.NET Core) ,
117115112 bytesPruébalo en línea!
intdeclaraciones.Estoy seguro de que esto podría hacerse más corto; tal vez llamando
func fy retirando recursivamente el exteriorforbucle .Enfoque recursivo, 85 bytes
Pruébalo en línea!
No estoy seguro de qué tan bien se ajusta este enfoque dentro de los límites del golf de código debido a tener que establecer el
Func<int,int> f = nullprimero, y esofse llama nuevamente, pero no se cuenta para los bytes. Cualquier aclaración sería apreciada.fuente