Satanás Primes
¿Quienes son?
que se Primes
contienen 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>6661
encuentra a Satan-Prime detrás (o igual) y más cerca de sí mismo.
Ejemplos
Número entero n=30000
tiene 3 Satanás-Primes (SP) detrás de él: [6661, 16661, 26669]
.
Su código debe devolver 26669
cuá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 n
en 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 prime
desafío ...Respuestas:
Mathematica, 82 bytes
fuente
Neim , 9 bytes
Explicación:
Pruébalo en línea!
fuente
+6
empuja 666? ¿O es Neim solo ese metal?+x
significa 612 + código de caracteres dex
. El código de6
pasa 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Ṁ
w
debería funcionar en lugar deẇ@
.Pyth ,
1514 bytesGuardado 1 byte con la ayuda de Dave .
Errores de memoria para
969696
y 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?
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\6
05AB1E , 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 -1
al 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
-p
Prué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
969696
en menos de medio segundo.Explicación
Entrada implícita de entero
U
.Genere una matriz de enteros de
1
aU
.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 f
que calcula los factores de entrada$a
. Si la entrada$a
es primo, esto devolverá solo$a
.La parte principal del programa es el
for()
bucle infinito . Dentro del ciclo, verificamos si$n
-match
es contra666
y si$n
es primo (es decir,$n
coincide con todos los factores de$n
). Si es así, lo colocamos$n
en 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
.tail
aquí. De hechotail -1
es 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
10000
tomó 10 segundos328765
tomó 3 minutos678987
tomó 9 minutos969696
tomó 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==1
pord<2
desden>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):n
Ruby,
67,66,58, 56 bytesIncluye
+7
bytes para-rprime
Es bastante rápido, calcula valores
~2^52
en aproximadamente un segundo y2^64
en 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!
int
declaraciones.Estoy seguro de que esto podría hacerse más corto; tal vez llamando
func f
y retirando recursivamente el exteriorfor
bucle .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 = null
primero, y esof
se llama nuevamente, pero no se cuenta para los bytes. Cualquier aclaración sería apreciada.fuente