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 npotencia 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

npotencia 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!1es 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
ncomo argumento de línea de comando. La primera líneastdoutes 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
nenstdin. Como arriba, la primera líneastdoutes 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^2fuente
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
Ncomo un límite inferior desde el que buscar: esto es válido porque es1^N + 2^N > Npara todosN.Toma
Nla pila, deja el número de taxi correspondiente en la pila. Para tomarNde stdin, anteponer~.La versión anterior permite
x^N + x^N(porN=2lo que da50). Para requerir agregar números distintos (en65lugar de dar ), cambie el3a4. 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