ระบบรูปไข่


9

บทนำ

ให้ห้าคะแนนในเครื่องบินงานของคุณคือการคำนวณพื้นที่ของวงรีที่ผ่านจุดเหล่านี้

คุณสามารถสันนิษฐานได้ว่าสามารถสร้างวงรีที่ไม่เสื่อมได้เพียงหนึ่งเดียวด้วยค่าอินพุตที่กำหนด

กฎระเบียบ

อินพุตเป็น10จำนวนเต็มในรูปแบบที่สะดวกใด ๆ ซึ่งสอดคล้องกับxและyพิกัดของจุด ตัวอย่างเช่นคุณสามารถป้อนข้อมูลเป็นรายการ10เลขจำนวนเต็ม[x1, y1, x2, y2, ..., x5, y5]หรือเป็นแบบ[[x1, y1], [x2, y2], ..., [x5, y5]]อื่น ๆ นอกจากนี้คุณยังสามารถจัดการกับตัวเลขทศนิยมได้ แต่จำเป็นต้องมีจำนวนเต็มเท่านั้น

เอาท์พุทเป็นตัวแทนของพื้นที่ของวงรี นี่อาจเป็นนิพจน์สัญลักษณ์หรือค่าทศนิยมที่มี8ความแม่นยำอย่างน้อยที่สุด

นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ

ตัวอย่างอินพุตและเอาต์พุต

การป้อนข้อมูล:

[-2, 3, 2, 5, 5, 3, 4, 0, 1, -3]

เอาท์พุท:

62.15326783788685

ภาพของวงรีที่ผ่านจุดเหล่านี้:

วงรีสำหรับตัวอย่างนี้

ตัวอย่างเพิ่มเติม:

f(60, -92, -31, -10, 78, -19, -27, -35, 91, -37) = 9882.59540465108
f(-9, -4, 7, 7, 10, 1, -7, -10, 0, 7) = 269.5966648188643
f(-3, 2, 0, -5, 4, 0, -4, 1, -1, 2) = 98.54937293879908

นี่เป็นโอกาสที่ได้แรงบันดาลใจจากปัญหา SPOJ นี้หรือไม่? http://www.spoj.com/problems/ELLIPSE/
xnor

มันไม่ใช่ ฉันไม่ได้ใช้งานในเว็บไซต์นั้น
อีธานวอร์ด

มันหมายความว่าอะไรที่ส่งออกอาจจะแสดงออกถึงสัญลักษณ์?
xnor

@ xnor บางที (ไม่ได้ประเมิน) อินทิกรัลรี
Mego

2
เครื่องมือที่ดีที่สุดสำหรับงานนั้นไปที่ tooooooo: โปรแกรมสร้างกราฟคณิตศาสตร์! ไปรูป: P
Magic Octopus Urn

คำตอบ:


7

Mathematica, 87 80 78 ไบต์

Area@ImplicitRegion[+##Sign@#&@@Det[{1,##,1##,#^2,#2^2}&@@@{x|y,##}]>0,{x,y}]&

ใช้ 5 อินพุต: [{x1, y1}, ... , {x5, y5}]ปัจจัยการผลิต:

ส่งคืนค่าที่แน่นอน / สัญลักษณ์

อย่างไร?

อนุญาตf(x, y)แสดงว่าเวกเตอร์(1, x, y, xy, x^2, y^2)สำหรับบางอันx, yอัน

จากนั้นดีเทอร์มีแนนต์ของเมทริกซ์ที่มีเวกเตอร์แถว[f(x, y), f(x1, y1), f(x2, y2), ..., f(x5, y5)]คือศูนย์ iff(x, y)คือจุดบนวงรีที่เรากำลังค้นหา เช่นดีเทอร์มีแนนต์แสดงถึงการแสดงออกของวงรี

เนื่องจากเครื่องหมายของนิพจน์อาจกลับด้านเราจึงใช้เทอมคงที่และคูณนิพจน์ทั้งหมดด้วยเครื่องหมายของค่าคงที่ ด้วยวิธีนี้เราสามารถตั้งค่านิพจน์มากกว่า 0 เพื่อค้นหาพื้นที่


+1 Signผมชอบวิธีการที่คุณได้รับการแก้ไขปัญหาเกี่ยวกับ
Vitaliy Kaurov

5

MATLAB , 130 124 114 ไบต์

อินพุตเป็น takean เป็นสองเวกเตอร์คอลัมน์หนึ่งรายการสำหรับ x- และอีกหนึ่งสำหรับพิกัด y วิธีการนี้ใช้การถดถอยแบบลำดับขั้นต่อเนื่องน้อยที่สุดซึ่งให้วงรีที่แน่นอนหากจุดทั้งหมดอยู่บนวงรีอย่างแน่นอนจากนั้นจึงใช้สูตรที่ให้ไว้ที่นี่ (ขอบคุณ @ orlp) เพื่อคำนวณพื้นที่

function A=f(x,y);p=null([x.^2,2*x.*y,y.^2,2*x,2*y,0*x+1]);A=pi*det(p([1,2,4;2,3,5;4:6]))/abs(p(1)*p(3)-p(2)^2)^1.5

ด้วยการต่อท้ายบรรทัดต่อไปนี้คุณสามารถพล็อตโค้ง

X=x;Y=y;
[x,y] = meshgrid(linspace(-7,7,50));
W = [x(:).^2,2*x(:).*y(:),y(:).^2,2*x(:),2*y(:),0*x(:)+1];
Z=x;Z(:) = W*p;
clf;plot(X,Y,'o');hold on;contour(x,y,Z,[0,0]);

ลองออนไลน์!


3

Mathematica 84 Bytes

ฉันพบว่านี่เป็นปัญหาที่น่าสนใจ ทุกวงรีคือการแปลงเลียนแบบของหน่วยวงกลมซึ่งสามารถแปรสภาพเป็น {x, y} = {Cos (t), Sin (t)} ดังนั้นจุดบนวงกลมสามารถถูกแมปกับวงรีโดย {xE, yE } = A {x, y} + B โดยที่ A คือเมทริกซ์คงที่และเวกเตอร์ B การเสียบจุดให้ผลเป็น 10 สมการสเกลาร์และ 11 สเกลาร์ไม่ทราบ แต่เราสามารถตัดสินใจได้ว่าการกำหนดพารามิเตอร์เริ่มต้นที่ t = 0 ดังนั้นระบบจึงสามารถแก้ไขได้ ค่าสัมบูรณ์ของดีเทอร์มิแนนต์ของเมทริกซ์ A คืออัตราส่วนของพื้นที่ของวงรีต่อวงหน่วยดังนั้นเราจึงคูณด้วย Pi การแม็กซ์กำจัดวิธีลบ

Max[π(a d-b c)/.Solve@MapThread[#2=={e,f}+{a,b}Cos@#+{c,d}Sin@#&,{{0,u,v,w,x},#}]]&

การใช้งาน:

%@{{-2, 3}, {2, 5}, {5, 3}, {4, 0}, {1, -3}}

อัตราผลตอบแทน:

(1001 π)/(16 Sqrt[10])

2

Mathematica, 144 ไบต์

x_±y_:=x^2a+b*x*y+y^2c+d*x+e*y+f;n=∞;Integrate[UnitStep[x±y/.FindInstance[And@@(#±#2==0&@@@#),{a,b,c,d,e,f},Reals,2][[1]]],{x,-n,n},{y,-n,n}]& 


ใช้ได้กับกรณีทดสอบทั้งหมด

ตัวอย่างอินพุต :[{{-3, 2}, {0, -5}, {4, 0}, {-4, 1}, {-1, 2}}]

ผล

9882.59540465108163146329
269.596664818864334050934
98.5493729387989858575752525

-10 ไบต์จาก JungHwan Min
± 1 ไบต์ในการเข้ารหัส windows เริ่มต้น [CP-1252]


อืม ... ทำไมฉันถึงไม่มีที่สิ้นสุดในอินพุทของคุณ?
numbermaniac

@ ตัวเลขฉันไม่ทราบ ฉันทำให้ถูกต้อง คุณใช้อินพุตนี้[{{-3, 2}, {0, -5}, {4, 0}, {-4, 1}, {-1, 2}}]หรือไม่
J42161217

ใช่ฉัน - มันแปลก
numbermaniac

ฉันได้รับ(3575880 π)/(2351 Sqrt[2351])ซึ่งเป็นที่ยอมรับคำตอบ
J42161217

1
แปลกแม้ClearAllไม่สามารถแก้ไขได้ โอ้ไม่ต้องกังวลหรอกฮ่าฮ่า ตราบใดที่มันเหมาะกับคุณ Mathematica รุ่นใดที่คุณเปิดอยู่
numbermaniac

2

Desmos , 101 ไบต์

u
v
f(a,b,c,h,k,x,y)=(((x-h)cosc+(y-k)sinc)/a)^2+(((x-h)sinc-(y-k)cosc)/b)^2
f(m,n,o,p,q,u,v)~1
mn\pi

Online Desmosไม่ชอบการวางหลายบรรทัดดังนั้นคุณต้องป้อนในหนึ่งบรรทัดในแต่ละครั้งหรือ

ลองออนไลน์!

ป้อนข้อมูลที่ถ่ายด้วยสองรายการและu vผลลัพธ์จะปรากฏในบรรทัดสุดท้าย

คำอธิบาย:

  • สองบรรทัดแรกตั้งชื่อตัวแปรอินพุต
  • บรรทัดที่สามกำหนดสมการวงรีใด ๆ ที่มีรัศมีaและbมุมการหมุนและการชดเชยc(h,k)

    • Prettified ดูเหมือนว่านี้: ป้อนคำอธิบายรูปภาพที่นี่
  • บรรทัดที่สี่คำนวณการถดถอยของfกว่ารายการuและvการหารัศมีmและnมุมการหมุนและการชดเชย o(p,q)

  • บรรทัดสุดท้ายจะคำนวณพื้นที่ของวงรีด้วยสูตร A = pi*r1*r2

นอกจากนี้คุณยังสามารถลองออนไลน์ได้ (ลิงค์ที่แตกต่างกัน) สำหรับเวอร์ชันภาพแบบอินเทอร์แอคทีฟที่ขยายออกเล็กน้อย คุณสามารถเลื่อนไปรอบ ๆ ห้าจุดและดูวงรีและพื้นที่แบบเรียลไทม์:

ป้อนคำอธิบายรูปภาพที่นี่

หรือนี่คือวิธีแก้ปัญหาที่ยาวกว่าเล็กน้อยโดยใช้สูตรนี้ (เหมือนกับคำตอบของ @ flawr ):

Desmos, 106 ไบต์

u
v
f(A,B,C,D,E,F,x,y)=Axx+2Bxy+Cyy+2Dx+2Ey+F
f(G,H,I,J,K,L,u,v)~0
\pi(GIL+2HJK-JJK-GKK-HHL)/(GI-HH)^{1.5}

ลองออนไลน์!


คุณอาจไม่จำเป็นต้องใช้แบ็กสแลชที่นั่นมาก่อนpiในบรรทัดสุดท้าย: หากฉันพิมพ์mnpiสัญลักษณ์ pi ยังคงปรากฏขึ้น นอกจากนี้คุณหมายถึง " ผลลัพธ์ที่แสดงในบรรทัดสุดท้าย" ไม่ใช่อินพุตหรือไม่
numbermaniac

1
@ ตัวเลขช่างฉันใส่แบ็กสแลชเพราะเมื่อฉันคัดลอกวางในมันก็ไม่รู้จักmnpiแม้ว่ามันจะเป็นคำพูดเมื่อฉันพิมพ์มันออกมา และใช่ฉันหมายถึงเอาต์พุตไม่ใช่อินพุตขอบคุณ
Scott Milner
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.