Inspirado en esta entrada de Numberphile
Antecedentes
Los números de distancia de cubo de un entero n se definen aquí como el conjunto de enteros que están a una distancia de x³ para una x dada . Para un ejemplo simple, con n=100
y x=2
, los números de distancia del cubo son {92,108}
.
Esto se puede extender a un conjunto más grande simplemente variando x . Con x ∈ {1,2,3,4}
y lo mismo n=100
, tenemos el conjunto resultante {36,73,92,99,101,108,127,164}
.
Definamos CD (n, x) como el conjunto de todos los enteros n ± z³
con z ∈ {1,2,3,...,x}
.
Ahora podemos centrarnos en algunas de las propiedades especiales de estos números de distancia de cubo . De las muchas propiedades especiales que los números pueden tener, las dos propiedades que nos interesa aquí son primalidad y divisores primos .
Para el ejemplo de CD anterior (100,4) , tenga en cuenta que 73, 101, 127
todos son primos. Si los eliminamos del conjunto, nos quedamos con {36,92,99,108,164}
. Todos los divisores primos de estos números son (en orden) {2,2,3,3,2,2,23,3,3,11,2,2,3,3,3,2,2,41}
, lo que significa que tenemos 5 divisores primos distintos {2,3,23,11,41}
. Por lo tanto, podemos definir que CD (100,4) tiene ravenidad 1 de 5
.
El desafío aquí es escribir una función o programa, en la menor cantidad de bytes, que genere la escasez de una entrada dada.
Entrada
- Dos enteros positivos
n
yx
, en cualquier formato conveniente.
Salida
- Un entero único que describe la raveza de los dos números de entrada, cuando se calcula con CD (n, x) .
Reglas
- La entrada / salida puede ser a través de cualquier método adecuado .
- Se aplican restricciones de escapatoria estándar .
- Para facilitar el cálculo, puede suponer que los datos de entrada serán tales que CD (n, x) solo tendrá números positivos en el conjunto (es decir, ningún CD (n, x) tendrá números negativos o cero).
- La función o el programa deberían poder manejar los números de entrada para que se
n + x³
ajusten al tipo de datos de entero nativo de su idioma. Por ejemplo, para un tipo entero con signo de 32 bits, todos los números de entrada conn + x³ < 2147483648
son posibles.
Ejemplos
n,x - output
2,1 - 0 (since CD(2,1)={1,3}, distinct prime divisors={}, ravenity=0)
5,1 - 2
100,4 - 5
720,6 - 11
Notas al pie
1 - Llamado así porque no estamos interesados en la cardinalidad del conjunto, sino en un tipo diferente de ave. Como estamos tratando con divisores "comunes", elegí usar el cuervo común .
100,4
rinde 5? Los números de distancia de cubo de ese conjunto son36,164
, y los factores primos de ese conjunto son2,3,41
(ya que los factores de ese conjunto son{2, 3, 4, 6, 9, 12, 18, 36}
y{2, 4, 41, 82, 164}
, respectivamente). Por lo tanto, la salida debe ser 3, no 5.100,4
es el ejemplo que el OP explica en la sección Fondo. Su error parece ser que debe considerar todo1..x
, así que[1,2,3,4]
para este caso.Respuestas:
Jalea, 16 bytes
Toma x y n como argumentos de línea de comandos, en ese orden. Pruébalo en línea!
Cómo funciona
fuente
Pyth -
211918 bytesMe pregunto si hay un truco.
Test Suite .
fuente
Julia, 107 bytes
Esta es una función que acepta dos enteros y devuelve un entero.
Sin golf:
fuente
05AB1E ,
2019 bytesCódigo:
En la forma interactiva
x
,n
. Utiliza la codificación CP-1252 .Pruébalo en línea!
fuente
MATL , 21 bytes
La entrada es
x
,n
separada por una nueva línea.Pruébalo en línea!
Explicación
fuente
J, 30 bytes
Este es un verbo diádico, usado de la siguiente manera:
Pruébalo aquí.
Explicación
fuente
@:+(
¿Por qué tan triste, un chico increíble?Python 3.5,
218198 bytes:( Gracias a @Blue por salvarme 20 bytes).
Una buena función lambda de una línea, aunque puede ser un poco larga. Como estaba usando Python, tuve que encontrar mi propia forma de encontrar los compuestos para el primer paso, y luego los divisores principales para el último paso, por lo que no fue muy fácil, y este fue el más corto que yo solo. . podría hacerlo. No obstante, hace lo que necesita y estoy orgulloso de ello. :) Sin embargo, cualquier consejo para jugar golf un poco más es bienvenido.
fuente
PARI / GP , 79 bytes
Aquí está mi implementación directa original. La versión optimizada anterior combina los dos vectores en un solo vector un poco más complicado.
fuente
f
(me gustaf=(n,x)->...
), puede probarlo conf(100,4)
. Alternativamente, puede invocarlo en una línea con((n,x)->...)(100,4)
.Rubí, 138 bytes
Fue un desafío insignificante . :-)
fuente
Ruby,
132120114 bytesSoy consciente de que esta solución todavía necesita mucho golf. Cualquier consejo de golf es bienvenido.
No golfista:
fuente
Python 3.5 -
177175159 bytesCualquier consejo de golf bienvenido :)
Sin golf:
fuente
Wolfram Language (Mathematica) , 90 bytes
Pruébalo en línea!
sin golf: el código se lee principalmente de derecha a izquierda,
fuente