CJam (59 bytes)
{[WZ~C24X8TT]f*[4XGYC6 4Y].+_0=!>2%Z65135Zb+:(3/.f#:.*)W*+}
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 em 4
. 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- zx + y+ z+ w = 0- x yzw = ax 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:
xyzW====6 a s t3( a t4- 2 s4)2( 4 a t4+ s4) ( 2 a2t8+ 10 a s4t4- s8)3 s5( 4 a t4+ s4)22 t ( a t4- 2 s4) ( 2 a2t8+ 10 a s4t4- s8)2 ( 2 a2t8+ 10 a s4t4- s8)3 s3t ( 4 a t4+ s4)- ( 2 a2t8+ 10 a s4t4- s8)6 s3t ( a t4- 2 s4)
Um relacionado ao Euler:
xyzW====( 8 s8+ a2) ( 8 s8- 88 a s4- um2)12 s3( s4- a ) ( 8 s8+ 20 a s4- um2)( 8 s8+ a2) ( 8 s8- 88 a s4- um2)12 s3( 8 s4+ a ) ( 8 s8+ 20 a s4- um2)192 a s5( s4- a )2( 8 s4+ a )2( 8 s8+ a2) ( 8 s8- 88 a s4- um2) ( 8 s8+ 20 a s4- um2)- 3 s ( 8 s8+ 20 a s4- um2)34 ( s4- a ) ( 8 s4+ a ) ( 8 s8+ a2) ( 8 s8- 88 a s4- um2)
Um mais simples:
xyzW====( s4- 4 a )22 s3( s4+ 12 a )2 a ( 3 s4+ 4 a )2s3( s4- 4 a ) ( s)4+ 12a )s5+ 12 a s2 ( 3 s4+ 4 a )- 2 s5( s4+ 12a )(s4- 4 a ) ( 3 s4+ 4 a )
E um relacionado a esse:
xyzW====s5( s4- 3 a )32 ( s4+ a ) ( s)12+ 12 a s8- 3 a2s4+ 2 a3)s12+ 12 a s8- 3 a2s4+ 2 a32 s3( s4- 3 a ) ( 3 s4- a )2 a ( s)4+ a )2( 3 s4- a )2s3( s4- 3 a ) ( s)12+ 12 a s8- 3 a2s4+ 2 a3)- 2 s ( s12+ 12 a s8- 3 a2s4+ 2 a3)( s4- 3 a ) ( s)4+ a ) ( 3 s4- a )
Observe que toda família tem pelo menos dois denominadores da forma p s4- quma para positivo p e q: como todos os termos envolvidos são racionais, isso significa que há algumas umapara 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.