CJam (59 ไบต์)
{[WZ~C24X8TT]f*[4XGYC6 4Y].+_0=!>2%Z65135Zb+:(3/.f#:.*)W*+}
นี่คือบล็อกที่ไม่ระบุชื่อ (ฟังก์ชัน) ซึ่งใช้จำนวนเต็มหรือสองเท่าในสแต็กและสร้างอาร์เรย์ที่มีสามคู่ มันมีอยู่สองกรณีภายในเพื่อจัดการกับทุกปัจจัยการผลิตที่ไม่ใช่เชิงลบเนื่องจากมีเพียงกรณีหนึ่งมันจะทำลายทั้งหรือ0.25
4
มันยังคงแบ่งสำหรับอินพุต-12
และ-1.3333333333333333
แต่สเป็คอนุญาตให้ ...
การสาธิตออนไลน์ดำเนินการแล้วเพิ่มค่าพิมพ์ทั้งสี่และทวีคูณพวกเขาเพื่อแสดงว่าได้รับค่าดั้งเดิม (ข้อผิดพลาดการปัดเศษแบบโมดูโล)
พื้นหลังทางคณิตศาสตร์
ต่อไปนี้โนแมนเอลกีส์ที่เรากำหนดเสริม Z แล้วx + Y + Z + W = 0และ- x Y Z W =หรือx Y Z W + = 0 สิ่งนี้มีความสมมาตรมากมาย วิธีการแก้ปัญหาใด ๆ จะมีสี่สูตรและเราสามารถเลือกสาม golfiestw=−x−y−zx+y+z+w=0−xyzw=axyzw+a=0
Elkies มอบชุดโซลูชันสี่ตระกูล ออยเลอร์:
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.