Écrire des fonctions x(a)
, y(a)
et z(a)
telles que pour tout rationnel a
toutes les fonctions renvoient des nombres rationnels et x(a)*y(a)*z(a)*(x(a) + y(a) + z(a)) == a
. Vous pouvez supposer un ≥ 0.
Vous n'avez pas besoin d'utiliser des types rationnels ou des opérations dans votre programme, tant que votre programme est mathématiquement solide. Par exemple, si vous utilisez une racine carrée dans votre réponse, vous devez montrer que son argument est toujours un carré d'un nombre rationnel.
Vous pouvez écrire trois fonctions nommées x, y, z ou écrire trois programmes à la place si les fonctions sont lourdes ou inexistantes pour votre langue. Alternativement, vous pouvez également écrire un seul programme / fonction qui renvoie trois nombres x, y, z. Enfin, si vous préférez, vous pouvez entrer / sortir les nombres rationnels comme une paire de numérateur / dénominateur. Votre score est la taille totale des trois fonctions ou trois programmes en octets. Le plus petit score l'emporte.
Le forçage brutal n'est pas autorisé. Pour tout a = p / q où p, q ≤ 1000, votre programme devrait s'exécuter en moins de 10 secondes.
Un exemple (cela ne signifie pas que votre décomposition doit donner ces chiffres):
x = 9408/43615
y = 12675/37576
z = 1342/390
x*y*z*(x+y+z) = 1
a
?Réponses:
CJam (59 octets)
Il s'agit d'un bloc (fonction) anonyme qui prend un entier ou un double sur la pile et produit un tableau avec trois doubles. Il a deux cas en interne pour gérer toutes les entrées non négatives, car avec un seul cas, il se briserait sur l'un
0.25
ou l' autre4
. Il casse toujours pour les entrées-12
et-1.3333333333333333
, mais la spécification permet que ...La démo en ligne l' exécute puis additionne les valeurs, imprime les quatre et les multiplie pour montrer qu'elle obtient la valeur d'origine (erreur d'arrondi modulo).
Contexte mathématique
Elkies propose quatre familles d'ensembles de solutions. Euler:
One related to Euler's:
A simpler one:
And one related to that one:
Observe that every family has at least two denominators of the formps4−qa for positive p and q : since all the terms involved are rational, that means that there's some positive a for which we get division by zero. Therefore we must use at least two sets of solutions which have their singularities at different values of a . Intuitively it's going to be golfiest to choose two sets from the same family. I've chosen the simplest family (the third one) with parameters s=1 and s=2 .
la source
Axiom, 191 bytes
It is the traslation of the formula Peter Taylor report in this page with some code would make the denominators not be 0. one test
la source