S. Ryley udowodnił następujące twierdzenie w 1825 roku:
Każda liczba wymierna może być wyrażona jako suma trzech wymiernych kostek.
Wyzwanie
Biorąc pod uwagę pewną liczbę wymierną znajdź trzy liczby wymierne takie, że
Detale
Twoje zgłoszenie powinno być w stanie obliczyć rozwiązanie dla każdego wejścia, biorąc pod uwagę wystarczającą ilość czasu i pamięci, co oznacza, że na przykład dwa 32-bity int
reprezentujące ułamek nie są wystarczające.
[p1,p2,p3,q]
, interpretowane jako ?Odpowiedzi:
Pari / GP , 40 bajtów
Wypróbuj online!
Ta sama długość, ta sama formuła:
Wypróbuj online!
Ta formuła jest podana w: Richmond, H. (1930). Racjonalnych roztworówx3+y3+z3=R . Proceedings of Edinburgh Mathematical Society, 2 (2), 92-100.
Sprawdź to online!
źródło
Haskell,
9589766968 bytesTry it online!
Simple bruteforce solution. It tests all triples of rational numbers of the form(a1n,a2n,a3n)with −n≤ain≤n.
źródło
[-n,1/n-n..n]
Husk, 14 bytes
Simple brute force solution. Try it online!
Explanation
Division in Husk uses rational numbers by default and Cartesian products work correctly for infinite lists, making this a very straightforward program.
źródło
JavaScript (Node.js), 73 bytes
Takes input asp and q are BigInt literals.
(p)(q)
, whereReturnspq=(p1q1)3+(p2q2)3+(p3q3)3 .
[[p1,q1],[p2,q2],[p3,q3]]
such thatTry it online!
Derived from H. W. Richmond (1930), On Rational Solutions of x3 + y3 +z3 = R.
źródło
Haskell, 70 bytes
In An introduction to the Theory of Numbers (by Hardy and Wright) there is an construction that even includes a rational parameter. For golfing purposes I just set this parameter to 1, and tried reducing as much as possible. This results in the formula
Try it online!
źródło
perl -Mbigrat -nE, 85 bytes
You can save 8 bytes (the leading
$_=eval;
) if you know the input is an integer; this part is needed to have the program grok an input of the form308/1728
. Input is read from STDIN. I'm using the formula given by @alephalpha.źródło