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

โปรแกรมตรวจสอบจุดหนึ่งสามารถแปลงเป็นจุดอื่นได้หรือไม่ใน Python


สมมติว่าเรามีจุดเริ่มต้น (sx, sy) และจุดเป้าหมาย (tx, ty) เราต้องตรวจสอบว่ามีลำดับการเคลื่อนที่จากจุดเริ่มต้นไปยังจุดสิ้นสุดหรือไม่ การเคลื่อนไหวในที่นี้ประกอบด้วยการจุด (x, y) และแปลงเป็น (x, x+y) หรือ (x+y, y)

ดังนั้น หากอินพุตเป็นเหมือน (sx, sy) =(1,1) (tx, ty) =(4,5) ผลลัพธ์จะเป็น True นั่นเป็นเพราะย้าย (1,1) ไปยัง (2, 1) จากนั้น (3,1) จากนั้น (4,1) จากนั้น (4,5)

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

  • กำหนดฟังก์ชัน Solve() นี่จะใช้เวลา sx, sy, tx, ty

  • ถ้า sx> tx หรือ sy> ty แล้ว

    • คืนค่าเท็จ

  • ถ้า sx เหมือนกับ tx แล้ว

    • return (ty-sy) mod sx เหมือนกับ 0

  • ถ้า sy เหมือนกับ ty แล้ว

    • return(tx - sx) mod sy เหมือนกับ 0

  • ส่งคืนการแก้ (sx, sy, tx-ty, ty) หรือแก้ (sx, sy, tx, ty-tx)

ตัวอย่าง

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

def solve(sx, sy, tx, ty):
   if sx > tx or sy > ty:
      return False
   if sx == tx:
      return (ty-sy)%sx == 0
   if sy == ty:
      return (tx - sx)%sy == 0
   return solve(sx, sy, tx-ty, ty) or solve(sx, sy, tx, ty-tx)

(sx, sy) = (1,1)
(tx, ty) = (4,5)
print(solve(sx, sy, tx, ty))

อินพุต

(1,1), (4,5)

ผลลัพธ์

True