Dado un entero, genera cinco cubos perfectos cuya suma es ese entero. Tenga en cuenta que los cubos pueden ser positivos, negativos o cero. Por ejemplo,
-10 == -64 - 64 + 64 + 27 + 27
por lo tanto, para la entrada -10puede salir [-64, -64, 64, 27, 27], aunque son posibles otras soluciones. Tenga en cuenta que debe generar los cubos, no los números que se están cubicando.
Siempre existe una solución : es posible que disfrute de resolver esto por sí mismo. Se conjetura además que cuatro cubos son suficientes.

-10otra posible solución podría ser,-1000+4574296+4410944-4492125-4492125por ejemplo. ¿Y se permite la salida--o en+-lugar de+/-respectivamente (es decir, en3 = 27+-27+-125--64--64lugar de3 = 27-27-135+64+64)?--5, diría que no, según las reglas habituales sobre la salida de una expresión .+signos, solo los números.-10 = -64 - 64 + 64 + 27 + 27o-10 = -343 + 0 -8 +125 +216Respuestas:
Brachylog , 18 bytes
Pruébalo en línea!
Explicación
Básicamente describimos el problema, con la restricción adicional de que queremos que la lista de salida no aumente en términos de magnitudes: esto obliga a Brachylog a retroceder adecuadamente sobre todas las combinaciones posibles de 5 valores, en lugar de retroceder infinitamente sobre el valor del último elemento de la lista.
Encontrar diferentes soluciones
Al agregar a
≜, es posible usar este predicado para encontrar todas las soluciones con magnitudes crecientes: por ejemplo, aquí están las 10 primeras soluciones para42fuente
Brachylog , 11 bytes
Gracias Fatalize por guardar un byte
Pruébalo en línea!
En primer lugar,
~+exige que la salida (.) debe sumar a la entrada.l₅nuevamente restringe la salida, dictando que debe tener una longitud de 5.≥₁declara que la lista debe estar en orden decreciente (creo que esto es necesario para evitar que el programa entre en un bucle infinito)Unificamos explícitamente esta lista con
.la variable de salida, porque nuestro próximo predicado "cambiará" los valores dentro de la lista. Luego tomamos la raíz cúbica de cada valor en la lista con√₃ᵐ. Dado que Brachylog está intrínsecamente basado en enteros, esto dicta que todos los números en la lista son números de cubo.Finalmente, usamos
∧porque hay un implícito.agregado al final de cada línea. Como no queremos.unificarnos con la lista de raíces cúbicas, la unificamos antes y la usamos∧para evitar que se unifique al final.fuente
Python 2 ,
585754 bytesPruébalo en línea!
fuente
k=-(n-n**3)/6;[v**3for v in~k,1-k,n,k,k]-(n-n**3)no puedes usar(n**3-n)?Python 3 , 65 bytes
Pruébalo en línea!
Quiero decir, una fórmula explícita está incluso aquí (aunque resumió la construcción detrás de un existencial)
fuente
ky reescribiendo su ecuación. Pruébalo en línea!Java 8,
17887737165 bytes-6 bytes gracias a @ OlivierGrégoire .
La misma explicación en la parte inferior, pero usando la ecuación base en lugar de la derivada que usé antes (gracias a la respuesta de Python 3 de @LeakyNun por la sugerencia implícita):
k = (n - n 3 ) / 6
n == n 3 + (k + 1) 3 + (k-1) 3 - k 3 - k 3
Pruébalo en línea.
Antigua respuesta de 178 bytes:
Pruébalo en línea.
Explicación:
Doy un bucle
kdesde 0 hacia arriba hasta que se encuentra una solución. En cada iteración verificará estas dos ecuaciones:k: n == n 3 + (k + 1) 3 + (k-1) 3 - k 3 - k 3k: n == n 3 - (k + 1) 3 - (k-1) 3 + k 3 + k 3¿Por qué?
Como n - n 3 = n * (1-n) * (1 + n) y luego 6 | (nn 3 ) , se puede escribir como n - n 3 = 6k .
6k = (k + 1) 3 + (k-1) 3 - k 3 - k 3 .
Y por lo tanto n = n 3 + (k + 1) 3 + (k-1) 3 - k 3 - k 3 para algunos k .
Fuente.
fuente
n->new long[]{n*n*n,(n=(n-n*n*n)/6+1)*n*n--,--n*n*n,n=-++n*n*n,n}(o 64 usando entradas para resultados menos precisos)Jalea , 13 bytes
Pruébalo en línea!
Descubre la fórmula de forma independiente. (x + 1) 3 + (x-1) 3 - 2 × x 3 == 6 × x.
Alternativa de 13 bytes: ¡ Pruébelo en línea!
fuente
‘c3µ³;;;C;~*3debería guardar un byte desde (n ^ 3-n) / 6 = C (n + 1, 3)Octava ,
474033 bytesPruébalo en línea!
Ahorré 6 bytes gracias a Giuseppe, ya que había olvidado eliminar algunos paréntesis antiguos. Ahorró otros bytes cambiando los signos, gracias a rafa11111.
Utiliza la fórmula en la publicación math.se vinculada :
Parece ser más largo si trato de resolver la ecuación: (nn ^ 3) = (k + 1) ^ 3 + (k-1) ^ 3 - k ^ 3 - k ^ 3 con respecto a k , en lugar de solo usando la ecuación.
fuente
Funciones de Minecraft (18w11a, 1.13 instantáneas), 813 bytes
Utiliza seis funciones:
una
si
do
re
mi
F
"Toma datos" de un objetivo del marcador nombrado
n, créalo con/scoreboard objectives add n dummyy luego configúrelo usando/scoreboard players set x n 5. Luego llame a la función usando/function aUtiliza la fórmula de esta respuesta matemática.
fuente
JavaScript (Node.js) ,
4845 bytesPruébalo en línea!
fuente
|0?n**3-ndebe ser un múltiplo de 6 para enteron.MATL , 21 bytes
Esto intenta todas las 5 tuplas de números del conjunto
(-abs(n))^3, (-abs(n)+1)^3, ..., abs(n)^3. Entonces es muy ineficiente.Pruébalo en línea!
fuente
Haskell ,
4342 bytesSolo la respuesta popular, traducida a Haskell. ¡Gracias a @ rafa11111 por guardar un byte!
Pruébalo en línea!
fuente
ktarea ...Casco , 12 bytes
Pruébalo en línea!
Intenta todas las listas posibles de 5 cubos y devuelve el primero con la suma correcta.
Explicación
fuente
C (gcc) ,
858175 bytesSe guardaron 4 bytes y luego 6 bytes gracias al reordenamiento de las asignaciones de @ ceilingcat
Pruébalo en línea!
fuente
Fortran (GFortran) , 53 bytes
Pruébalo en línea!
¿Fortran superando a Python? ¿Que está pasando aqui?
fuente
Python 3,
656160 bytesEditar: dejó caer algunos espacios innecesarios.
Editar: gracias al reordenamiento inteligente de rafa11111.
Inspirado por esto .
Pruébalo en línea!
fuente
(N**3-N)y[N,1-k,-1-k,k,k]R ,
4038 bytesHace uso de la fórmula en la publicación matemática vinculada. Hasta 2 bytes gracias a Giuseppe.
Pruébalo en línea!
fuente
APL (Dyalog Unicode) ,
3026 bytesPruébalo en línea!
Traducción APL de la respuesta de LeakyNun .
Gracias a Adám por 4 bytes yendo tácito.
¿Cómo?
fuente
Casco , 20 bytes
Pruébalo en línea!
Utiliza la fórmula de esta publicación .
Explicación
fuente
x86,
4139 bytesImplementación principalmente directa de la fórmula con entrada
ecxy salida en la pila.Lo interesante es que usé una función de cubing, pero como
call labelson 5 bytes , almaceno la dirección de la etiqueta y uso el byte 2call reg. Además, como estoy empujando valores en mi función, uso un enjmplugar deret. Es muy posible que ser inteligente con un bucle y la pila evite llamar por completo.No hice ningún truco elegante con cubos, como usar
(k+1)^3 = k^3 + 3k^2 + 3k + 1.Registro de cambios:
Fix byte recuento usando
noten lugar deneg/dec.-2 bytes por no
xoringedxya que probablemente sea 0 deimul.Objdump:
Aquí está mi versión de prueba que hace todos los cubos al final. Después de que los valores se introducen en la pila, el bucle de cubo sobrescribe los valores de la pila. Actualmente es de
4240 bytes, pero debería haber algunas mejoras en alguna parte.fuente
Cúbicamente , 51 caracteres, 55 bytes
Pruébalo en línea!
Aparentemente, MDXF olvidó implementar el SBCS ...
fuente
Unefunge 98 , 35 bytes
Pruébalo en línea!
Utiliza la fórmula populares desde esta respuesta math.se .
fuente
Perl 5
-nE, 48 bytespunta de sombrero
fuente
PowerShell Core , 52 bytes
Pruébalo en línea!
Utiliza la ecuación
o=o^3 + (1-k)^3 + (-k-1)^3 + k^3 + k^3, dondek=o^3 - o; esta es una refactorización menor de lo popularl=o-o^3(conk=-l).Como nota al margen, la expresión
l=o-o^3parece un gato con una oreja lastimada.fuente
Ruby , 43 bytes
Pruébalo en línea!
fuente