การสลายตัวแบบมีเหตุผล a = xyz (x + y + z)


21

ฟังก์ชั่นเขียนx(a), y(a)และz(a)เช่นว่าเหตุผลใด ๆa ทุกฟังก์ชั่กลับสรุปตัวเลขx(a)*y(a)*z(a)*(x(a) + y(a) + z(a)) == aและ คุณอาจสมมติ≥ 0

คุณไม่จำเป็นต้องใช้ประเภทเหตุผลหรือการดำเนินงานในโปรแกรมของคุณตราบใดที่โปรแกรมของคุณมีเสียงทางคณิตศาสตร์ เช่นถ้าคุณใช้สแควร์รูทในคำตอบของคุณคุณจะต้องแสดงให้เห็นว่าอาร์กิวเมนต์ของมันนั้นมักจะเป็นจำนวนที่สอง

คุณสามารถเขียนฟังก์ชั่นสามชื่อ x, y, z หรือเขียนสามโปรแกรมแทนหากฟังก์ชั่นยุ่งยากหรือไม่มีอยู่สำหรับภาษาของคุณ หรือคุณอาจเขียนโปรแกรม / ฟังก์ชั่นเดียวที่คืนค่าตัวเลขสามตัวคือ x, y, z ในที่สุดหากคุณต้องการคุณอาจป้อน / ส่งออกจำนวนตรรกยะเป็นคู่ของตัวเศษ / ส่วน คะแนนของคุณคือขนาดรวมของทั้งสามฟังก์ชั่นหรือสามโปรแกรมในหน่วยไบต์ คะแนนที่น้อยที่สุดชนะ

ไม่อนุญาตการบังคับเดรัจฉาน สำหรับ a = p / q โดยที่ p, q ≤ 1,000 โปรแกรมของคุณควรทำงานภายใน 10 วินาที


ตัวอย่าง (นี่ไม่ได้หมายความว่าการสลายตัวของคุณจะต้องให้หมายเลขเหล่านี้):

x = 9408/43615
y = 12675/37576
z = 1342/390
x*y*z*(x+y+z) = 1

เราสามารถเขียนฟังก์ชั่นหนึ่งซึ่งเอาท์พุททั้งหมดของพวกเขาด้วยกัน (พูดในอาร์เรย์)?
Leun Nun

เราสามารถใส่ตัวเศษและส่วนเป็นตัวเลขสองตัวได้หรือไม่?
Leun Nun

@LeakyNun ใช่และใช่
orlp

1
เป็นไปได้aหรือไม่ที่จะทำเพื่อใคร?
ลดขนาด

2
ฉันคิดว่าคุณไม่ต้องการแสดงหลักฐานเพราะมันจะให้ทางออก แต่คำพูดของคุณไม่ใช่หลักฐาน
ลดขนาด

คำตอบ:


10

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=xyzx+y+z+w=0xyzw=axyzw+a=0

Elkies มอบชุดโซลูชันสี่ตระกูล ออยเลอร์:

x=6ast3(at42s4)2(4at4+s4)(2a2t8+10as4t4s8)y=3s5(4at4+s4)22t(at42s4)(2a2t8+10as4t4s8)z=2(2a2t8+10as4t4s8)3s3t(4at4+s4)w=(2a2t8+10as4t4s8)6s3t(at42s4)

One related to Euler's:

x=(8s8+a2)(8s888as4a2)12s3(s4a)(8s8+20as4a2)y=(8s8+a2)(8s888as4a2)12s3(8s4+a)(8s8+20as4a2)z=192as5(s4a)2(8s4+a)2(8s8+a2)(8s888as4a2)(8s8+20as4a2)w=3s(8s8+20as4a2)34(s4a)(8s4+a)(8s8+a2)(8s888as4a2)

A simpler one:

x=(s44a)22s3(s4+12a)y=2a(3s4+4a)2s3(s44a)(s4+12a)z=s5+12as2(3s4+4a)w=2s5(s4+12a)(s44a)(3s4+4a)

And one related to that one:

x=s5(s43a)32(s4+a)(s12+12as83a2s4+2a3)y=s12+12as83a2s4+2a32s3(s43a)(3s4a)z=2a(s4+a)2(3s4a)2s3(s43a)(s12+12as83a2s4+2a3)w=2s(s12+12as83a2s4+2a3)(s43a)(s4+a)(3s4a)

Observe that every family has at least two denominators of the form ps4qa 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.


1

Axiom, 191 bytes

f(s,a)==(b:=s^4-4*a;c:=s^4+12*a;x:=3*s^4+4*a;[b^2/(2*c*s^3),2*a*x^2/(b*c*s^3),s*c/(2*x)])
g(a:FRAC INT):List FRAC INT==(s:=1;repeat(s^4=4*a or s^4=-12*a or 3*s^4=4*a=>(s:=s+1);break);f(s,a))

It is the traslation of the formula Peter Taylor report in this page with some code would make the denominators not be 0. one test

(7) -> y:=g(1)
          9   98 13
   (7)  [--,- --,--]
         26   39 14
                                              Type: List Fraction Integer
(8) -> y.1*y.2*y.3*(y.1+y.2+y.3)
   (8)  1
                                              Type: Fraction Integer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.