ตีกอล์ฟวงกลมที่เล็กที่สุด!


29

ปัญหา:

ให้คะแนนที่ไม่ว่างเปล่าในระนาบคาร์ทีเซียนหาวงกลมที่เล็กที่สุดที่ล้อมรอบพวกมันทั้งหมด ( ลิงค์ Wikipedia )

ปัญหานี้เล็กน้อยถ้าจำนวนคะแนนเป็นสามหรือน้อยกว่า (ถ้ามีจุดหนึ่งวงกลมจะมีรัศมีเป็นศูนย์ถ้ามีสองจุดส่วนของเส้นตรงที่รวมจุดนั้นคือเส้นผ่านศูนย์กลางของวงกลมถ้ามี จุดสามจุด (ไม่ใช่เครื่องหมาย colinear) เป็นไปได้ที่จะได้รับสมการของวงกลมที่สัมผัสได้ทั้งหมดหากพวกมันเป็นรูปสามเหลี่ยมที่ไม่เป็นปมหรือวงกลมที่สัมผัสเพียงสองจุดและล้อมรอบที่สามหากสามเหลี่ยมนั้นเป็นรูปสามเหลี่ยม ดังนั้นเพื่อความท้าทายนี้จำนวนคะแนนควรมากกว่าสาม

ความท้าทาย:

  • อินพุต:รายการของจุดที่ไม่ใช่ colinear 4 จุดขึ้นไป คะแนนควรมีพิกัด X และ Y พิกัดสามารถลอยได้ เพื่อบรรเทาความท้าทายไม่ควรมีสองจุดที่ใช้ร่วมกันพิกัด X เดียวกัน
    ตัวอย่างเช่น:[(0,0), (2,1), (5,3), (-1,-1)]
  • เอาท์พุท: tuple ของค่า(h,k,r)เช่นนั้นเป็นสมการของวงกลมที่เล็กที่สุดที่ล้อมรอบทุกจุด(xh)2+(yk)2=r2

กฎ:

  • คุณสามารถเลือกวิธีการป้อนข้อมูลใดก็ได้ที่เหมาะกับโปรแกรมของคุณ
  • ควรพิมพ์ผลลัพธ์ไปยังSTDOUTหรือส่งคืนโดยฟังก์ชัน
  • ต้องการภาษา "ปกติ" ทั่วไปใช้ภาษาได้ แต่ภาษาเอสแตงใดก็ได้
  • คุณสามารถสันนิษฐานได้ว่าคะแนนนั้นไม่ได้ colinear
  • นี่คือโค้ดกอล์ฟดังนั้นโปรแกรมที่เล็กที่สุดในหน่วยไบต์ชนะ ผู้ชนะจะได้รับการคัดเลือกหนึ่งสัปดาห์หลังจากการโพสต์ความท้าทาย
    • โปรดรวมภาษาที่คุณใช้และความยาวเป็นไบต์เป็นส่วนหัวในบรรทัดแรกของคำตอบของคุณ: # Language: n bytes

กรณีทดสอบ:

  • 1:
    • การป้อนข้อมูล: [(-8,0), (3,1), (-6.2,-8), (3,9.5)]
    • เอาท์พุท: [-1.6, 0.75, 9.89]
  • 2:
    • การป้อนข้อมูล: [(7.1,-6.9), (-7,-9), (5,10), (-9.5,-8)]
    • เอาท์พุท: [-1.73, 0.58, 11.58]
  • 3:
    • การป้อนข้อมูล: [(0,0), (1,2), (3,-4), (4,-5), (10,-10)]
    • เอาท์พุท: [5.5, -4, 7.5]
  • 4:
    • การป้อนข้อมูล: [(6,6), (-6,7), (-7,-6), (6,-8)]
    • เอาท์พุท: [0, -0.5, 9.60]

กอล์ฟมีความสุข !!!


ความท้าทายที่เกี่ยวข้อง:



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

2
@Annauld เหมือนกับคุณ สำหรับกรณีทดสอบ 2 ฉันได้ศูนย์ (-1.73, 0.58) และสำหรับกรณีทดสอบ 3 (5.5, -4)
Robin Ryder

@Arnauld ขอบคุณสำหรับความคิดเห็นของคุณ ฉันได้แก้ไขโพสต์ตามนั้น
Barranka

@Arnauld อุ๊ปส์ขอโทษ จริง อัลโดแก้ไขข้อสังเกตของคุณ
Barranka

คำตอบ:


26

ภาษา Wolfram (Mathematica) , 28 27 ไบต์

#~BoundingRegion~"MinDisk"&

ลองออนไลน์!

Built-ins มีประโยชน์ที่นี่ เอาท์พุทเป็นวัตถุดิสก์ที่มีศูนย์กลางและรัศมี เช่นเดียวกับคนอื่น ๆ ฉันพบว่ากรณีทดสอบที่ 2 และ 3 แตกต่างจากคำถาม

ขอบคุณ @lirtosiast สำหรับการบันทึกไบต์!

ถ้ารายการจะต้องเป็นเอาท์พุทนี้สามารถทำได้ใน 35 ไบต์ (ค่าใช้จ่ายของอีก 8 ไบต์) ขอบคุณ @Roman ที่ชี้เรื่องนี้ออกมา


3
ฉันคาดหวังว่าจะมี Mathematica ในตัว แต่ฉันไม่ได้คาดหวังว่า Mathematica จะมี "วัตถุดิสก์"
Robin Ryder

36 ไบต์เพื่อให้ได้รูปแบบผลลัพธ์:Append@@BoundingRegion[#,"MinDisk"]&
โรมัน

20

JavaScript (ES6),  298 ... 243  242 ไบต์

[x, y, r]ส่งกลับอาร์เรย์

p=>p.map(m=([c,C])=>p.map(([b,B])=>p.map(([a,A])=>p.some(([x,y])=>H(x-X,y-Y)>r,F=s=>Y=(d?((a*a+A*A-q)*j+(b*b+B*B-q)*k)/d:s)/2,d=c*(A-B)+a*(j=B-C)+b*(k=C-A),r=H(a-F(a+b),A-F(A+B,X=Y,j=c-b,k=a-c)))|r>m?0:o=[X,Y,m=r]),q=c*c+C*C),H=Math.hypot)&&o

ลองออนไลน์!

หรือดูเวอร์ชันที่จัดรูปแบบ

อย่างไร?

วิธี

สำหรับคู่ของแต่ละจุดเราสร้างวงกลมมีขนาดเส้นผ่าศูนย์กลางAB(A,B)(X,Y,r)AB

X=Ax+Bx2,Y=Ay+By2,r=(AxBx2)2+(AyBy2)2

สำหรับแต่ละสามจุดที่แตกต่างกันเราสร้างวงกลมซึ่ง circumscribes สามเหลี่ยมABC(A,B,C)(X,Y,r)ABC

d=Ax(ByCy)+Bx(CyAy)+Cx(AyBy)
X=(Ax2+Ay2)(ByCy)+(Bx2+By2)(CyAy)+(Cx2+Cy2)(AyBy)2d
Y=(Ax2+AY2)(Cx-Bx)+(Bx2+BY2)(Ax-Cx)+(Cx2+CY2)(Bx-Ax)2d
r=(XAx)2+(YAy)2

สำหรับแต่ละวงกลมที่สร้างขึ้นเราจะทดสอบว่าแต่ละจุดอยู่ภายในหรือไม่:(x,y)

(xX)2+(yY)2R

และในที่สุดเราก็กลับวงกลมที่ถูกต้องที่สุด

การดำเนินงาน

ในรหัส JS สูตรการคำนวณสำหรับวงกลมที่ จำกัด วงกลมของสามเหลี่ยมนั้นง่ายขึ้นเล็กน้อย สมมติว่าเรานิยามนำไปสู่:(X,Y)d0Q=Cx2+CY2

X=(Ax2+AY2-Q)(BY-CY)+(Bx2+BY2-Q)(CY-AY)2d
Y=(Ax2+AY2-Q)(Cx-Bx)+(Bx2+BY2-Q)(Ax-Cx)2d

ด้วยวิธีนี้ฟังก์ชันตัวช่วยต้องการเพียงสองพารามิเตอร์เพื่อคำนวณแต่ละพิกัด:F(J,k)

  • (BY-CY,CY-AY)สำหรับX
  • (Cx-Bx,Ax-Cx)สำหรับY

พารามิเตอร์ที่สามใช้ใน (เช่นข้อโต้แย้งที่เกิดขึ้นจริงของ ) จะใช้ในการคำนวณเมื่อหมายความว่ารูปสามเหลี่ยมเป็นคนเลวและเราจะต้องพยายามที่จะใช้ขนาดเส้นผ่าศูนย์กลางแทนFs(X,Y)d=0


อาจจะเขียนนิวตันชนิดเพิ่มประสิทธิภาพตัวเลขสั้น ...
qwr

คุณมีหลักฐานของความถูกต้องหรือไม่? ฉันเห็นว่านี่เป็นแนวทางที่เป็นไปได้ แต่ยิ่งไปกว่านั้นดูเหมือนจะต้องใช้งานมาก
ปีเตอร์เทย์เลอร์

3
@PeterTaylor อัลกอริทึมที่ถูกกล่าวถึงในวิกิพีเดีย: อัลกอริทึมที่ไร้เดียงสาแก้ปัญหาได้ในเวลา O (n ^ 4) โดยการทดสอบวงกลมที่กำหนดโดยคู่และอเนกประสงค์ของทุกจุด แต่น่าเสียดายที่ไม่มีลิงก์ไปยังหลักฐาน
Arnauld

มันจะพบปัญหาของความแม่นยำทำให้ไม่มีวิธีแก้ไขหรือไม่?
l4m2

1
@Annauld หากคุณต้องการตัวเลขแปลก ๆ ที่จะไปถึงฉันอาจบอกว่าไม่เป็นไร ถ้ามันล้มเหลวในสถานการณ์ง่าย ๆ ที่อาจเป็นปัญหา
l4m2

14

R , 59 ไบต์

function(x)nlm(function(y)max(Mod(x-y%*%c(1,1i))),0:1)[1:2]

ลองออนไลน์!

รับอินพุตเป็นเวกเตอร์ของพิกัดที่ซับซ้อน Modเป็นระยะทาง (โมดูลัส) ในระนาบที่ซับซ้อนและnlmเป็นฟังก์ชั่นการเพิ่มประสิทธิภาพ: พบตำแหน่งของศูนย์ (ขาออกestimate) ซึ่งช่วยลดระยะทางสูงสุดไปยังจุดที่มีการป้อนข้อมูลและให้ระยะทางที่สอดคล้องกัน (ขาออกminimum) คือรัศมี . แม่นยำถึง 3-6 หลัก; ส่วนท้ายของ TIO ปัดเศษผลลัพธ์เป็น 2 หลัก

nlmนำเวกเตอร์ที่เป็นตัวเลขมาเป็นอินพุต: y%*%c(1,1i)ธุรกิจแปลงเป็นคอมเพล็กซ์


9

เยลลี่ , 100 98 ไบต์

_²§½
1ịṭƊZIṚṙ€1N1¦,@ṭ@²§$µḢZḢ×Ø1œị$SḤ÷@P§
ZṀ+ṂHƲ€_@Ç+ḷʋ⁸,_²§½ʋḢ¥¥
œc3Ç€;ŒcZÆm,Hñ/$Ʋ€$ñ_ƭƒⱮṀ¥Ðḟ⁸ṚÞḢ

ลองออนไลน์!

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

รหัสสำหรับ make_circumcircle บิตได้รับแรงบันดาลใจจากโค้ดที่ไซต์นี้ซึ่งได้รับแรงบันดาลใจจาก Wikipedia


1
ฉันไม่เข้าใจรหัสนี้ แต่แทนที่จะเป็น diameters และ circumcircles แยกกันคุณสามารถสร้างชุดของสามจุดด้วยการทำซ้ำและกรองรายการของจุดที่เหมือนกันทั้งสามได้หรือไม่
lirtosiast

2

APL (NARS), 348 ตัวอักษร, 696 ไบต์

f←{h←{0=k←⍺-1:,¨⍵⋄(k<0)∨k≥i←≢w←⍵:⍬⋄↑,/{w[⍵],¨k h w[(⍳i)∼⍳⍵]}¨⍳i-k}⋄1≥≡⍵:⍺h⍵⋄⍺h⊂¨⍵}
c←{⍵≡⍬:1⋄(x r)←⍵⋄(-r*2)++/2*⍨⍺-x}
p←{(b k)←⍺ ⍵⋄∧/¨1e¯13≥{{⍵{⍵c⍺}¨b}k[⍵]}¨⍳≢k}
s2←{(+/k),√+/↑2*⍨-/k←2÷⍨⍵}
s3←{0=d←2×-.×m←⊃{⍵,1}¨⍵:⍬⋄m[;1]←{+/2*⍨⍵}¨⍵⋄x←d÷⍨-.×m⋄m[;2]←{1⊃⍵}¨⍵⋄y←d÷⍨--.×m⋄(⊂x y),√+/2*⍨(x y)-1⊃⍵}
s←{v/⍨⍵p v←(s2¨2 f⍵)∪s3¨3 f⍵}
s1←{↑v/⍨sn=⌊/sn←{2⊃⍵}¨v←s⍵}

นี่คือ 'การนำไปใช้' ของสูตรในโซลูชัน Arnauld ... ผลลัพธ์และความคิดเห็น:

  s1 (¯8 0)(3 1)(¯6.2 ¯8)(3 9.5)
¯1.6 0.75  9.885469134 
  s1 (7.1 ¯6.9)(¯7 ¯9)(5 10)(¯9.5 ¯8)
¯1.732305109 0.5829680042  11.57602798 
  s1 (0 0)(1 2)(3 ¯4)(4 ¯5)(10 ¯10)
5.5 ¯4  7.5 
  s1 (6 6)(¯6 7)(¯7 ¯6)(6 ¯8)
0 ¯0.5  9.604686356 
  s1 (6 6)(¯6 7)(¯7 ¯6)(6 ¯8)(0 0)(1 2)(3 ¯4)(4 ¯5)(10 ¯10)
2 ¯1.5  11.67261753 
  s1 (6 6)(¯6 7)(¯7 ¯6)(6 ¯8)(1 2)(3 ¯4)(4 ¯5)(10 ¯10)(7.1 ¯6.9)(¯7 ¯9)(5 10)(¯9.5 ¯8)
1.006578947 ¯1.623355263  12.29023186 
  s1 (1 1)(2 2)(3 3)(4 4)
2.5 2.5  2.121320344 
  ⎕fmt s3 (1 1)(2 2)(3 3)(4 4)
┌0─┐
│ 0│
└~─┘

f: ค้นหาการรวมกันของ alpha ojets ในชุดโอเมก้า

f←{h←{0=k←⍺-1:,¨⍵⋄(k<0)∨k≥i←≢w←⍵:⍬⋄↑,/{w[⍵],¨k h w[(⍳i)∼⍳⍵]}¨⍳i-k}⋄1≥≡⍵:⍺h⍵⋄⍺h⊂¨⍵}

((X, Y), r) ต่อจากนี้จะแทนรัศมีหนึ่งรอบของรัศมี r และศูนย์กลางใน (XY)

c: ค้นหาว่าจุดใน⍺อยู่ภายในเส้นรอบวง ((XY) r) ใน⍵ (ผลลัพธ์ <= 0) ot เป็นภายนอก (ผลลัพธ์> 0) ในกรณีของอินพุตเส้นรอบวงใน⍵มันคือ⍬เป็นอินพุท จะส่งคืน 1 (ไม่อยู่ที่เส้นรอบวง) แต่ละอินพุตที่เป็นไปได้ใน⍺

c←{⍵≡⍬:1⋄(x r)←⍵⋄(-r*2)++/2*⍨⍺-x}

p: ถ้า⍵เป็นอาร์เรย์ของ ((XY) r); สำหรับแต่ละ ((XY) r) ใน⍵เขียน 1 ถ้าทุกจุดในอาเรย์ internal เป็นภายในถึง ((XY) r) มิฉะนั้นเขียน 0 NB นี่คือบางสิ่งที่ไม่ไปเพราะผมต้องปัดให้ epsilon = 1e¯ 13 กล่าวอีกนัยหนึ่งก็คือในกรณีที่มีการ จำกัด คะแนนของเครื่องบิน

p←{(b k)←⍺ ⍵⋄∧/¨1e¯13≥{{⍵{⍵c⍺}¨b}k[⍵]}¨⍳≢k}

s2: จาก 2 จุดใน⍵มันจะคืนค่าเส้นรอบวงในรูปแบบ ((XY) r) ที่มีเส้นผ่านศูนย์กลางใน 2 จุดนั้น

s2←{(+/k),√+/↑2*⍨-/k←2÷⍨⍵}

s3: จาก 3 คะแนนมันจะคืนค่าเส้นรอบวงในรูปแบบ ((XY) r) ที่ผ่านจุดสามจุดเหล่านั้นหากมีปัญหา (ตัวอย่างเช่นการจัดตำแหน่งจุด) มันจะล้มเหลวและส่งคืน⍬

s3←{0=d←2×-.×m←⊃{⍵,1}¨⍵:⍬⋄m[;1]←{+/2*⍨⍵}¨⍵⋄x←d÷⍨-.×m⋄m[;2]←{1⊃⍵}¨⍵⋄y←d÷⍨--.×m⋄(⊂x y),√+/2*⍨(x y)-1⊃⍵}

โปรดทราบว่า -. ×ค้นหาดีเทอร์มีแนนต์ของเมทริกซ์ nxn และ

  ⎕fmt ⊃{⍵,1}¨(¯8 0)(3 1)(¯6.2 ¯8)
┌3─────────┐     
3 ¯8    0 1│     |ax  ay 1|
│  3    1 1│   d=|bx  by 1|=ax(by-cy)-bx(ay-cy)+cx(ay-by)=ax(by-cy)+bx(cy-ay)+cx(ay-by)
│ ¯6.2 ¯8 1│     |cx  cy 1|
└~─────────┘

s: จาก n จุดใน⍵จะพบประเภทเส้นรอบวงของที่พบโดย s2 หรือของประเภท s3 ที่มีจุด n ทั้งหมด

s←{v/⍨⍵p v←(s2¨2 f⍵)∪s3¨3 f⍵}

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

s1←{↑v/⍨sn=⌊/sn←{2⊃⍵}¨v←s⍵}

2

Python 2 (PyPy) , 244 242 ไบต์

P={complex(*p)for p in input()}
Z=9e999,
for p in P:
 for q in{p}^P:
	for r in{p}^P:R,S=1j*(p-q),q-r;C=S.imag and S.real/S.imag-1jor 1;c=(p+q-(S and(C*(p-r)).real/(C*R).real*R))/2;Z=min(Z,(max(abs(c-t)for t in P),c.imag,c.real))
print Z[::-1]

ลองออนไลน์!

วิธีนี้ใช้อัลกอริธึมกำลังเดรัจฉาน O (n ^ 4) วนซ้ำแต่ละคู่และสามเหลี่ยมของจุดคำนวณจุดศูนย์กลางและรักษาจุดกึ่งกลางที่ต้องการรัศมีที่เล็กที่สุดเพื่อล้อมรอบจุดทั้งหมด มันจะคำนวณค่า circumcentre ของ 3 คะแนนผ่านการหาจุดตัดของเส้นแบ่งสองแนวตั้งฉาก (หรือหากจุดสองจุดเท่ากันจะใช้จุดกึ่งกลางกับจุดที่สาม)


ยินดีต้อนรับสู่ PPCG! เนื่องจากคุณใช้ Python 2 คุณสามารถบันทึก 1 ไบต์โดยแปลงทั้งสองช่องว่างในบรรทัดที่ 5 เป็นแท็บ
สตีเฟ่น

P={x+y*1j for x,y in input()}บันทึก 2 ไบต์เช่นกัน
Mr. Xcoder

1

Python 212 190 ไบต์

โซลูชันนี้ไม่ถูกต้องและฉันต้องทำงานทันทีดังนั้นฉันจึงไม่มีเวลาแก้ไข

a=eval(input())
b=lambda a,b: ((a[0]-b[0])**2+(a[1]-b[1])**2)**.5
c=0
d=1
for e in a:
    for f in a:
        g=b(e,f)
        if g>c:
            c=g
            d=[e,f]
print(((d[0][0]+d[1][0])/2,(d[0][1]+d[1][1])/2,c/2))

ลองออนไลน์!

ฉันหาจุดสองจุดที่อยู่ไกลที่สุดจากนั้นฉันก็สร้างสมการสำหรับวงกลมตามจุดเหล่านั้น!

ฉันรู้ว่านี่ไม่ใช่ไพ ธ อนสั้นที่สุด แต่ดีที่สุดที่ฉันสามารถทำได้! นี่เป็นความพยายามครั้งแรกของฉันในการทำสิ่งเหล่านี้ดังนั้นโปรดเข้าใจด้วย!


2
นี่สามารถเล่นกอล์ฟได้มากกว่านี้ ตัวอย่างเช่นคุณสามารถย่อif g>c:\n c=g\n d=[e,f]ให้สั้นif g>c:c=g;d=[e,f]ช่วยให้คุณมีพื้นที่ว่างมาก ฉันไม่คิดว่าคุณต้องเริ่มต้น d ล่วงหน้าด้วยการใช้ตัวแปรสองตัวและE,F=e,fในบรรทัดที่ 10 จะทำให้คุณprintสั้นลงมาก ฉันคิดว่าวิธีแก้ปัญหาด้วยmaxและความเข้าใจในรายการจะสั้นกว่าสองลูป แต่ฉันอาจผิด อย่างไรก็ตามวิธีแก้ปัญหาของคุณไม่ถูกต้อง สำหรับคะแนน (-1,0), (0,1.41), (0.5, 0), (1,0) วิธีการแก้ปัญหาของคุณคำนวณวงกลมรอบ 0 ด้วยรัศมี 1 แต่จุด (1, 1.41) ไม่ได้อยู่ในนั้น วงกลม.
Black Owl Kai

ยินดีต้อนรับ! ขอบคุณสำหรับคำตอบ. ดังที่ระบุไว้ในความคิดเห็นด้านบนโซลูชันของคุณไม่ถูกต้อง คำแนะนำสำหรับวิธีการแก้ปัญหาแบบ brute-force: วงกลมที่เล็กที่สุดที่เป็นไปได้สามารถแตะได้สองจุดหรือสามจุด คุณสามารถเริ่มคำนวณสมการสำหรับวงกลมที่แตะแต่ละจุดและตรวจสอบว่ามีจุดที่ล้อมรอบทุกจุดหรือไม่ จากนั้นคำนวณสมการของวงกลมที่แตะแต่ละจุดและตรวจสอบว่ามีจุดที่ล้อมรอบทุกจุดหรือไม่ เมื่อคุณได้วงกลมที่เป็นไปได้ทั้งหมดให้เลือกวงกลมที่มีรัศมีน้อยที่สุด
Barranka

1
เอาล่ะฉันจะพยายามทำให้มันใช้งานได้และจากนั้นฉันจะอัพเดตคำตอบ ฉันต้องหาวิธีตรวจสอบว่ามีจุดอยู่ในวงกลมหรือไม่
Ben Morrison

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