CJam (59 byte)
{[WZ~C24X8TT]f*[4XGYC6 4Y].+_0=!>2%Z65135Zb+:(3/.f#:.*)W*+}
Đây là một khối ẩn danh (hàm) lấy một số nguyên hoặc gấp đôi trên ngăn xếp và tạo ra một mảng có ba nhân đôi. Nó có hai trường hợp bên trong để xử lý tất cả các đầu vào không âm, vì chỉ với một trường hợp, nó sẽ phá vỡ một trong hai 0.25
hoặc 4
. Nó vẫn bị hỏng cho đầu vào -12
và -1.3333333333333333
, nhưng thông số kỹ thuật cho phép ...
Bản demo trực tuyến thực thi nó và sau đó cộng các giá trị, in cả bốn và nhân chúng để cho thấy rằng nó nhận được giá trị ban đầu (lỗi làm tròn modulo).
Nền toán học
Theo Noam Elkies, chúng tôi xác định phụ trợ . Khi đó x + y + z + w = 0 và - x y z w = a hoặc x y z w + a = 0w=−x−y−zx+y+z+w=0−xyzw=axyzw+a=0 . Điều này có rất nhiều đối xứng; bất kỳ giải pháp nào cũng sẽ có bốn công thức và chúng ta có thể chọn ba công thức tốt nhất.
Elkies cung cấp cho bốn gia đình của các bộ giải pháp. Euber:
xyzw====6ast3(at4−2s4)2(4at4+s4)(2a2t8+10as4t4−s8)3s5(4at4+s4)22t(at4−2s4)(2a2t8+10as4t4−s8)2(2a2t8+10as4t4−s8)3s3t(4at4+s4)−(2a2t8+10as4t4−s8)6s3t(at4−2s4)
One related to Euler's:
xyzw====(8s8+a2)(8s8−88as4−a2)12s3(s4−a)(8s8+20as4−a2)(8s8+a2)(8s8−88as4−a2)12s3(8s4+a)(8s8+20as4−a2)192as5(s4−a)2(8s4+a)2(8s8+a2)(8s8−88as4−a2)(8s8+20as4−a2)−3s(8s8+20as4−a2)34(s4−a)(8s4+a)(8s8+a2)(8s8−88as4−a2)
A simpler one:
xyzw====(s4−4a)22s3(s4+12a)2a(3s4+4a)2s3(s4−4a)(s4+12a)s5+12as2(3s4+4a)−2s5(s4+12a)(s4−4a)(3s4+4a)
And one related to that one:
xyzw====s5(s4−3a)32(s4+a)(s12+12as8−3a2s4+2a3)s12+12as8−3a2s4+2a32s3(s4−3a)(3s4−a)2a(s4+a)2(3s4−a)2s3(s4−3a)(s12+12as8−3a2s4+2a3)−2s(s12+12as8−3a2s4+2a3)(s4−3a)(s4+a)(3s4−a)
Observe that every family has at least two denominators of the form ps4−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.