Escribir funciones x(a)
, y(a)
y z(a)
tal que para cualquier racional a
todas las funciones devuelvan números racionales y x(a)*y(a)*z(a)*(x(a) + y(a) + z(a)) == a
. Puede suponer un ≥ 0.
No necesita usar tipos u operaciones racionales en su programa, siempre que su programa sea matemáticamente sólido. Por ejemplo, si usa una raíz cuadrada en su respuesta, debe demostrar que su argumento es siempre un cuadrado de un número racional.
Puede escribir tres funciones con nombre x, y, z o escribir tres programas en su lugar si las funciones son engorrosas o inexistentes para su idioma. Alternativamente, también puede escribir un solo programa / función que devuelva tres números x, y, z. Finalmente, si así lo prefiere, puede ingresar / emitir los números racionales como un par de numerador / denominador. Su puntaje es el tamaño total de las tres funciones o tres programas en bytes. El puntaje más pequeño gana.
El forzamiento bruto no está permitido. Para cualquier a = p / q donde p, q ≤ 1000 su programa debería ejecutarse en menos de 10 segundos.
Un ejemplo (esto no significa que su descomposición tenga que dar estos números):
x = 9408/43615
y = 12675/37576
z = 1342/390
x*y*z*(x+y+z) = 1
a
?Respuestas:
CJam (59 bytes)
Este es un bloque anónimo (función) que toma un número entero o doble en la pila y produce una matriz con tres dobles. Tiene dos casos internos para manejar todas las entradas no negativas, ya que con solo un caso se rompería en cualquiera
0.25
o4
. Todavía se rompe para las entradas-12
y-1.3333333333333333
, pero la especificación permite que ...La demostración en línea lo ejecuta y luego suma los valores, imprime los cuatro y los multiplica para mostrar que obtiene el valor original (error de redondeo del módulo).
Antecedentes matemáticos
Elkies ofrece cuatro familias de conjuntos de soluciones. Euler:
Uno relacionado con Euler:
Una más simple:
Y uno relacionado con ese:
fuente
Axioma, 191 bytes
Es la traducción del informe de fórmula Peter Taylor en esta página con algún código que haría que los denominadores no sean 0. una prueba
fuente