CJam (59 байт)
{[WZ~C24X8TT]f*[4XGYC6 4Y].+_0=!>2%Z65135Zb+:(3/.f#:.*)W*+}
Это анонимный блок (функция), который принимает целое или двойное число в стеке и создает массив с тремя двойными числами. У него есть два случая для обработки всех неотрицательных входных данных, так как только в одном случае он будет разбит на один 0.25
или 4
. Это все еще ломается для входов -12
и -1.3333333333333333
, но спецификация позволяет это ...
Онлайн демо выполняет его , а затем складывает значения, печатает все четыре, и умножает их , чтобы показать , что он получает исходное значение (ошибка округления по модулю).
Математическое обоснование
w = - x - y- зх + у+ z+ w = 0- х уZw = aх уZw + a = 0
Elkies дает четыре семейства наборов решений. Эйлера:
ИксYZвесзнак равнознак равнознак равнознак равно6 с т3( Т4- 2 с4)2( 4 т4+ с4) ( 2 а2T8+ 10 а с4T4- с8)3 с5( 4 т4+ с4)22 т ( т4- 2 с4) ( 2 а2T8+ 10 а с4T4- с8)2 ( 2 а2T8+ 10 а с4T4- с8)3 с3т ( 4 а т4+ с4)- ( 2 а2T8+ 10 а с4T4- с8)6 с3т ( т4- 2 с4)
Один, связанный с Эйлера:
ИксYZвесзнак равнознак равнознак равнознак равно( 8 с8+ а2) ( 8 с8- 88 s4- а2)12 с3( с4- а ) ( 8 с8+ 20 а с4- а2)( 8 с8+ а2) ( 8 с8- 88 s4- а2)12 с3( 8 с4+ а ) ( 8 с8+ 20 а с4- а2)192 а с5( с4- а )2( 8 с4+ а )2( 8 с8+ а2) ( 8 с8- 88 s4- а2) ( 8 с8+ 20 а с4- а2)- 3 с ( 8 с8+ 20 а с4- а2)34 ( с4- а ) ( 8 с4+ а ) ( 8 с8+ а2) ( 8 с8- 88 s4- а2)
Проще:
ИксYZвесзнак равнознак равнознак равнознак равно( с4- 4 а )22 с3( с4+ 12 а )2 а ( 3 с4+ 4 а )2s3( с4- 4 а ) ( с4+ 12 а )s5+ 12 а с2 ( 3 с4+ 4 а )- 2 с5( с4+ 12 а )( с4- 4 а ) ( 3 с4+ 4 а )
И один, связанный с этим:
ИксYZвесзнак равнознак равнознак равнознак равноs5( с4- 3 а )32 ( с4+ а ) ( с12+ 12 а с8- 3 а2s4+ 2 а3)s12+ 12 а с8- 3 а2s4+ 2 а32с3(с4- 3 а ) ( 3 с4- а )2 а ( с)4+ а)2( 3 с4- а)2s3(с4- 3 а ) ( с12+ 12 а с8- 3 а2s4+ 2 а3)- 2 сек ( ы12+ 12 а с8- 3 а2s4+ 2 а3)( с4- 3 а ) ( с4+ а ) ( 3 с4- а )
р с4- дaпQaas = 1с = 2