Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมจัดเรียงชุดของจุดคาร์ทีเซียนตามมุมขั้วใน Python


สมมติว่าเรามีชุดจุดคาร์ทีเซียนในรายการที่เรียกว่าจุด เราต้องจัดเรียงพวกมันตามมุมขั้วของพวกมัน มุมขั้วจะแตกต่างกันไปในช่วง 0 และ 2*PI หากบางจุดมีมุมขั้วเท่ากัน ให้จัดเรียงตามระยะห่างของจุดนั้นจากจุดกำเนิด

ดังนั้น ถ้าอินพุตเหมือนกับ points =[(1,1), (1,-2),(-2,2),(5,4),(4,5),(2,3),(- 3,4)],

โปรแกรมจัดเรียงชุดของจุดคาร์ทีเซียนตามมุมขั้วใน Python

จากนั้นผลลัพธ์จะเป็น [(5, 4), (1, 1), (4, 5), (2, 3), (-3, 4), (-2, 2), (1, -2) ]

โปรแกรมจัดเรียงชุดของจุดคาร์ทีเซียนตามมุมขั้วใน Python

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดคีย์ฟังก์ชันเปรียบเทียบ () นี่จะใช้เวลา x
  • atan :=แทน-ผกผันของ x[1]/x[0]
  • ส่งกลับคู่ (atan, x[1]^2+x[0]^2) ถ้า atan>=0 อย่างอื่น (2*pi + atan, x[0]^2+x[1]^2)
  • จากนั้นจัดเรียงจุดโดยใช้คีย์ฟังก์ชันตัวเปรียบเทียบ ()

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

นำเข้า mathdef แก้(จุด):def key(x):atan =math.atan2(x[1], x[0]) return (atan, x[1]**2+x[0]** 2) ถ้า atan>=0 อื่น (2*math.pi + atan, x[0]**2+x[1]**2) ส่งคืน sorted(points, key=key)points =[(1,1) , (1,-2),(-2,2),(5,4),(4,5),(2,3),(-3,4)]พิมพ์(แก้(จุด))

อินพุต

<ก่อนหน้า>[(1,1), (1,-2),(-2,2),(5,4),(4,5),(2,3),(-3,4)]

ผลลัพธ์

<ก่อนหน้า>[(5, 4), (1, 1), (4, 5), (2, 3), (-3, 4), (-2, 2), (1, -2)]