1729, conhecido como número de Hardy-Ramanujan , é o menor número inteiro positivo que pode ser expresso como a soma de dois cubos de números inteiros positivos de duas maneiras ( 12^3+1^3=10^3+9^3=1729
). Dado um número inteiro n
(como entrada de qualquer forma que seja natural para o seu idioma de escolha), encontre o menor número inteiro positivo que pode ser expresso como a soma de dois números inteiros positivos elevados à n
quinta potência de duas maneiras únicas. Não há uso de fontes externas. Menos personagens ganham.
Observe que esse é realmente um problema não resolvido para n>4
. Para esses números, deixe seu programa rodar para sempre em busca ou morra tentando! Faça com que, se houver tempo e recursos infinitos, o programa resolva o problema.
fonte
n
potência th". Caso contrário,91
(não1729
) é a solução paran=3
, desde6^3+(−5)^3=4^3+3^3=91
. Eu aprendi isso no seu link da Wikipedia, então talvez a sua referência HM torne isso desnecessário por convenção. Felicidades!1
é a primeira solução:1 = cbrt(0.5)^3 + cbrt(0.5)^3 = ...
Respostas:
APL
4541Versão mais curta mas mais lenta de 41 caracteres:
Você pode experimentá-lo online , basta colar a função e invocá-la com um número:
(O algoritmo é bastante tolo, não espere que o intérprete online calcule n = 4)
A resposta para n = 2 é 50 = 5² + 5² = 7² + 1² porque é um número que "pode ser expresso como a soma de dois quadrados de números inteiros positivos - não diz diferente - de duas maneiras".
Se você deseja adicionar a cláusula distinta, basta mudar
(v∘.≤v)
para o(v∘.<v)
mesmo número de caracteres e n = 2 se torna 65:Estou vencendo o GolfScript? Não pode ser !!
fonte
Ruby, 132
Passe
n
como argumento da linha de comando. Primeira linha parastdout
é a solução.Otimizado para código-golfe, não desempenho. (Funciona corretamente. Mas lento. Faz mais trabalho do que o necessário.)
Aqui está um programa C um pouco mais rápido. O mesmo algoritmo correto, mas horrível. (Eu realmente preciso estudar mais teoria!)
Testado para
n
= 2,n
= 3.C, 234
A versão C leva
n
emstdin
. Como acima, a primeira linha destdout
é a solução.fonte
GolfScript 53
Entrada é o número inicial na pilha. O número no topo da pilha no final é a resposta. Vou explicar isso com mais detalhes quando tiver uma chance.
Por exemplo
Isso é bem lento agora. Também conta
0
(para que 25 seja a respostan=2
, pois25=5^2+0^2=3^2+4^2
. Para não contar 0, adicione os 2 caracteres(;
após o primeiro,
Para descobrir isso
2 f=65
, já que65=8^2+1^2=5^2+6^2
fonte
GolfScript (30 caracteres)
Nota: isso é bastante lento, porque faz uma busca por força bruta em vez de algo elegante como uma fila de prioridade. A coisa mais elegante é reutilizar
N
como um limite inferior a partir do qual pesquisar: isso é válido1^N + 2^N > N
para todosN
.Pega
N
na pilha, deixa o número do táxi correspondente na pilha. Para retirarN
do stdin, faça o prefixo~
.A versão acima permite
x^N + x^N
(porN=2
isso dá50
). Para exigir a adição de números distintos (fornecendo65
), altere3
para4
. Para permitir0^N + x^N
(dar25
), remova o)
imediatamente antesN?
.fonte
Mathematica, 58 caracteres
Uma solução muito lenta usando a função de geração:
fonte