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

โปรแกรมค้นหาจำนวนการเคลื่อนไหวที่คาดหวังเพื่อชนะเกม Lotus และ Caterpillar ใน Python


สมมติว่าเรามีตารางที่มี n แถวและ m คอลัมน์ Amal และ Bimal กำลังเล่นเกมบนกริดนั้น กฎของเกมมีดังนี้ -

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

ดังนั้น หากอินพุตเท่ากับ n =5 m =7 เอาต์พุตจะเป็น 4.571428571428571

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

  • r :=0
  • สำหรับ l ในช่วง 0 ถึง m - 1 ให้ทำ
    • อุณหภูมิ :=n - 1.0
    • ถ้า l>=n แล้ว
      • อุณหภูมิ :=อุณหภูมิ + (l - n + 1) * ((l - 1) / ม.)
    • ถ้า l
    • อุณหภูมิ :=อุณหภูมิ + (m - n - l) * ((m - l - 2) / m)
  • r :=r + อุณหภูมิ / m
  • คืนสินค้า
  • ตัวอย่าง

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

    def solve(n, m):
       r = 0
    
       for l in range(m):
          temp = n - 1.0
          if l >= n:
             temp += (l - n + 1) * ((l - 1) / m)
          if l < m - n:
             temp += (m - n - l) * ((m - l - 2) / m)
          r += temp / m
    
       return r
    
    n = 5
    m = 7
    print(solve(n, m))

    อินพุต

    5, 7
    

    ผลลัพธ์

    4.571428571428571