Escreva funções x(a)
, y(a)
e z(a)
tais que, para qualquer racional, a
todas as funções retornem números racionais e x(a)*y(a)*z(a)*(x(a) + y(a) + z(a)) == a
. Você pode assumir um valor ≥ 0.
Você não precisa usar tipos ou operações racionais em seu programa, desde que seja matematicamente correto. Por exemplo, se você usar uma raiz quadrada em sua resposta, deverá mostrar que seu argumento é sempre o quadrado de um número racional.
Você pode escrever três funções nomeadas x, y, z ou escrever três programas, se as funções forem complicadas ou inexistentes para o seu idioma. Como alternativa, você também pode escrever um único programa / função que retorne três números x, y, z. Finalmente, se você preferir, poderá inserir / emitir os números racionais como um par de numerador / denominador. Sua pontuação é o tamanho total das três funções ou três programas em bytes. Menor pontuação ganha.
Forçar força bruta não é permitido. Para qualquer a = p / q em que p, q ≤ 1000, seu programa deve ser executado em menos de 10 segundos.
Um exemplo (isso não significa que sua decomposição deve fornecer esses números):
x = 9408/43615
y = 12675/37576
z = 1342/390
x*y*z*(x+y+z) = 1
a
?Respostas:
CJam (59 bytes)
Este é um bloco anônimo (função) que pega um número inteiro ou duplo na pilha e produz uma matriz com três duplos. Ele possui dois casos internamente para lidar com todas as entradas não negativas, pois com apenas um caso ele seria interrompido em um
0.25
ou em4
. Ainda quebra para entradas-12
e-1.3333333333333333
, mas a especificação permite que ...A demonstração online o executa e, em seguida, soma os valores, imprime todos os quatro e os multiplica para mostrar que ele obtém o valor original (erro de arredondamento do módulo).
Formação matemática
Seguindo Noam Elkies , definimos o auxiliar . Então x + y + z + w = 0 e - x y z w = a ou x y z w + a = 0w = - x - y- z x + y+ z+ w = 0 - x yzw = a x yzw + a = 0 . Isso tem muita simetria; qualquer solução terá quatro fórmulas e podemos escolher as três mais golfistas.
Elkies fornece quatro famílias de conjuntos de soluções. Euler:
Um relacionado ao Euler:
Um mais simples:
E um relacionado a esse:
Observe que toda família tem pelo menos dois denominadores da formap s4- quma para positivo p e q : como todos os termos envolvidos são racionais, isso significa que há algumas uma para o qual obtemos divisão por zero. Portanto, devemos usar pelo menos dois conjuntos de soluções que tenham suas singularidades em diferentes valores deuma . Intuitivamente, será mais difícil escolher dois conjuntos da mesma família. Eu escolhi a família mais simples (a terceira) com parâmetross = 1 e s = 2 .
fonte
Axioma, 191 bytes
É a tradução da fórmula do relatório de Peter Taylor nesta página com algum código que faria os denominadores não serem 0. um teste
fonte