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

โปรแกรมค้นหาว่าสถานีเฝ้าติดตาม k สถานีเพียงพอหรือไม่สำหรับตรวจสอบจุดเฉพาะใน Python


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

ดังนั้น หากอินพุตเหมือนกำลังสองของรัศมี (j) =4 จำนวนจุดตรวจสอบ (k) =3 เอาต์พุตจะเป็นเท็จ

ถ้า j =4 จะมี 4 จุดบนเส้นรอบวงของวงกลมการตรวจสอบ นั่นคือ:(0,2), (0,-2), (2,0) และ (-2,0) ดังนั้น หากเราแนะนำสถานีตรวจสอบใหม่ 3 สถานี เราไม่สามารถตรวจสอบจุดทั้งหมดได้อย่างเต็มที่

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

  • square_set :=ชุดที่มีค่ากำลังสองสูงสุด 44721
  • ผม :=0
  • res :=0
  • ในขณะที่ฉัน <(j ^ 0.5) ทำ
    • ถ้า (j - i ^ 2) มีอยู่ใน square_set แล้ว
      • res :=res + 1
    • ผม :=ผม + 1
  • res :=res * 4
  • ถ้า k>=res แล้ว
    • คืนค่า True
  • มิฉะนั้น
    • คืนค่าเท็จ

ตัวอย่าง

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

square_set = set([z ** 2 for z in range(44722)])
def solve(j, k):
    i = 0
    res = 0
    while i < (j ** 0.5):
        if j - i ** 2 in square_set:
            res += 1
        i += 1    
    res *= 4
    if k >= res:
        return True
    else:
        return False

print(solve(4, 3))

อินพุต

4, 3

ผลลัพธ์

False