1729, conocido como el número Hardy-Ramanujan , es el entero positivo más pequeño que se puede expresar como la suma de dos cubos de enteros positivos de dos maneras ( 12^3+1^3=10^3+9^3=1729
). Dado un número entero n
(como entrada en cualquier forma que sea natural para su idioma de elección) encuentre el número entero positivo más pequeño que pueda expresarse como la suma de dos enteros positivos elevados a la n
potencia th de dos maneras únicas. Sin uso de fuentes externas. Pocos personajes ganan.
Tenga en cuenta que esto es realmente un problema sin resolver para n>4
. Para esos números, ¡deje que su programa se ejecute para siempre en la búsqueda, o muera en el intento! Asegúrese de que si se le da tiempo y recursos infinitos, el programa resolverá el problema.
fuente
n
potencia th". De lo contrario,91
(no1729
) es la solución paran=3
, ya que6^3+(−5)^3=4^3+3^3=91
. Aprendí esto de su enlace de Wikipedia, así que tal vez su referencia HM hace que esto sea innecesario por convención. ¡Salud!1
es la primera solución:1 = cbrt(0.5)^3 + cbrt(0.5)^3 = ...
Respuestas:
APL
4541Versión más corta pero más lenta de 41 caracteres:
Puede probarlo en línea , simplemente pegue la función e invoque con un número:
(Sin embargo, el algoritmo es bastante tonto, no espere que el intérprete en línea calcule n = 4)
La respuesta para n = 2 es 50 = 5² + 5² = 7² + 1² porque es un número que "puede expresarse como la suma de dos cuadrados de enteros positivos, no es diferente, de dos maneras".
Si desea agregar la cláusula distinta, simplemente cambie
(v∘.≤v)
a(v∘.<v)
, el mismo número de caracteres, y n = 2 se convierte en 65:Estoy superando a GolfScript? No puede ser !!
fuente
Rubí, 132
Pase
n
como argumento de línea de comando. La primera líneastdout
es la solución.Optimizado para el código de golf, no el rendimiento. (Corre correctamente. Pero lento. Hace más trabajo del necesario)
Aquí hay un programa C más largo y ligeramente más rápido. El mismo algoritmo correcto pero horrible. (¡Realmente necesito estudiar más teoría!)
Probado para
n
= 2,n
= 3.C, 234
La versión C toma
n
enstdin
. Como arriba, la primera líneastdout
es la solución.fuente
GolfScript 53
La entrada es el número inicial en la pila. El número en la parte superior de la pila al final es la respuesta. Explicaré esto con más detalle cuando tenga la oportunidad.
P.ej
Esto es bastante lento en este momento. También cuenta
0
(de modo que 25 es la respuesta paran=2
, desde entonces25=5^2+0^2=3^2+4^2
. Para no contar 0, agregue los 2 caracteres(;
después del primero,
Para encontrar eso
2 f=65
, ya que65=8^2+1^2=5^2+6^2
fuente
GolfScript (30 caracteres)
Nota: esto es bastante lento, porque realiza una búsqueda de fuerza bruta en lugar de algo elegante como una cola prioritaria. Lo más elegante es reutilizarlo
N
como un límite inferior desde el que buscar: esto es válido porque es1^N + 2^N > N
para todosN
.Toma
N
la pila, deja el número de taxi correspondiente en la pila. Para tomarN
de stdin, anteponer~
.La versión anterior permite
x^N + x^N
(porN=2
lo que da50
). Para requerir agregar números distintos (en65
lugar de dar ), cambie el3
a4
. Para permitir0^N + x^N
(dar25
), retire el)
inmediatamente anteriorN?
.fuente
Mathematica, 58 caracteres
Una solución muy muy lenta que utiliza la función de generación:
fuente