1729, connu sous le nom de nombre de Hardy-Ramanujan , est le plus petit entier positif qui peut être exprimé comme la somme de deux cubes d'entiers positifs de deux manières ( 12^3+1^3=10^3+9^3=1729
). Étant donné un entier n
(comme une entrée sous quelque forme que ce soit naturelle dans la langue de votre choix), trouvez le plus petit entier positif qui peut être exprimé comme la somme de deux entiers positifs élevés à la n
puissance e de deux manières uniques. Pas d'utilisation de sources externes. Le moins de personnages gagne.
Notez qu'il s'agit en fait d' un problème non résolu pour n>4
. Pour ces chiffres, laissez votre programme s'exécuter à jamais dans la recherche, ou mourrez en essayant! Faites en sorte que si le temps et les ressources sont infinis, le programme résoudrait le problème.
la source
n
puissance e". Sinon,91
(pas1729
) est la solution pourn=3
, puisque6^3+(−5)^3=4^3+3^3=91
. J'ai appris cela à partir de votre lien Wikipédia, alors peut-être que votre référence HM rend cela inutile par convention. À votre santé!1
c'est la première solution:1 = cbrt(0.5)^3 + cbrt(0.5)^3 = ...
Réponses:
APL
4541Version plus courte mais plus lente de 41 caractères:
Vous pouvez l'essayer en ligne , collez simplement la fonction et invoquez-la avec un numéro:
(L'algorithme est assez stupide cependant, ne vous attendez pas à ce que l'interprète en ligne calcule n = 4)
La réponse pour n = 2 est 50 = 5² + 5² = 7² + 1² parce que c'est un nombre qui "peut être exprimé comme la somme de deux carrés d'entiers positifs - ne dit pas différent - de deux manières."
Si vous voulez ajouter la clause distincte, changez simplement
(v∘.≤v)
en(v∘.<v)
, même nombre de caractères, et n = 2 devient 65:Je bat GolfScript? Ça ne peut pas être !!
la source
Rubis, 132
Passez
n
comme argument de ligne de commande. La première lignestdout
est la solution.Optimisé pour le code-golf, pas pour les performances. (Fonctionne correctement. Mais lentement. Fait plus de travail que nécessaire.)
Voici un programme C plus long et légèrement plus rapide. Même algorithme correct mais horrible. (J'ai vraiment besoin d'étudier plus de théorie!)
Testé pour
n
= 2,n
= 3.C, 234
La version C prend le
n
dessusstdin
. Comme ci-dessus, la première lignestdout
est la solution.la source
GolfScript 53
L'entrée est le numéro initial sur la pile. Le numéro en haut de la pile à la fin est la réponse. J'expliquerai cela plus en détail lorsque j'en aurai l'occasion.
Par exemple
C'est assez lent en ce moment. Il compte également
0
(de sorte que 25 est la réponse pourn=2
, puisque25=5^2+0^2=3^2+4^2
. Pour ne pas compter 0, ajoutez les 2 caractères(;
après le premier,
Pour trouver cela
2 f=65
, depuis65=8^2+1^2=5^2+6^2
la source
GolfScript (30 caractères)
Remarque: c'est assez lent, car il effectue une recherche par force brute plutôt que quelque chose d'élégant comme une file d'attente prioritaire. La chose la plus élégante à ce sujet est la réutilisation
N
comme limite inférieure à partir de laquelle effectuer la recherche: cela est valable car1^N + 2^N > N
pour tousN
.Prend
N
sur la pile, laisse le numéro de taxi correspondant sur la pile. Pour prendreN
de stdin, ajoutez~
.La version ci-dessus le permet
x^N + x^N
(doncN=2
ça donne50
). Pour exiger l'ajout de nombres distincts (donner à la65
place), changez3
en4
. Pour permettre0^N + x^N
(donner25
), retirez le)
immédiatement avantN?
.la source
Mathematica, 58 caractères
Une solution très très lente utilisant la fonction de génération:
la source