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

โปรแกรมตรวจสอบการดำเนินการจัดส่งที่ระบุไว้ทั้งหมดถูกต้องหรือไม่ใน Python


สมมติว่าเรามีรายการสตริงที่เรียกว่าคำสั่ง แต่ละองค์ประกอบในรายการคำสั่งซื้อเริ่มต้นด้วย "P" หรือ "D" "P" หมายถึงหยิบขึ้นมา และ "D" หมายถึง "จัดส่ง" และตัวอักษรเหล่านี้ตามด้วยหมายเลขรหัสคำสั่งซื้อ ตัวอย่างเช่น "P6" หมายถึงการรับสินค้าที่ 6 เราต้องตรวจสอบว่ารายการคำสั่งซื้อถูกต้องหรือไม่ตามกฎเหล่านี้ -

  • เราไม่สามารถจัดส่งคำสั่งซื้อก่อนรับสินค้าได้
  • ต้องส่งทุกรถกระบะ
  • คำสั่งซื้อที่รับแล้วและจัดส่งแล้วจะไม่สามารถรับหรือจัดส่งได้อีก

ดังนั้น หากอินพุตเหมือนกับคำสั่งซื้อ =["P1", "D1", "P2", "P3", "D3", "D2"] ผลลัพธ์จะเป็น True เนื่องจากคำสั่งซื้อแรกจะถูกส่งหลังจากรับ และสำหรับการสั่งซื้อที่สองและสาม จะมีการหยิบขึ้นมาในครั้งเดียวและจัดส่งในที่สุด

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

  • a :=แผนที่ใหม่
  • หากคำสั่งซื้อมีรายการซ้ำกัน
    • คืนค่าเท็จ
  • สำหรับ i แต่ละตัวในคำสั่ง ทำ
    • ถ้าฉันขึ้นต้นด้วย "P" แล้ว
      • a[รับหมายเลขคำสั่งซื้อ] =1
    • มิฉะนั้น เมื่อฉันขึ้นต้นด้วย "D" แล้ว
      • ถ้าหมายเลขคำสั่งซื้อไม่อยู่ใน a แล้ว
        • คืนค่าเท็จ
      • มิฉะนั้น
        • a[หมายเลขคำสั่งจัดส่ง] ลดลง 1
  • คืนค่า จริง เมื่อผลรวมขององค์ประกอบทั้งหมดในรายการของค่าทั้งหมดของ a เท่ากับ 0 มิฉะนั้น เท็จ

ตัวอย่าง

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

def solve(orders):
   a = {}
   if len(set(orders)) != len(orders):
      return False
   for i in orders:
      if i[0] == "P":
         a[i[1:]] = 1
      elif i[0] == "D":
         if i[1:] not in a:
            return False
         else:
            a[i[1:]] -= 1
   return sum(a.values()) == 0

orders = ["P1", "D1", "P2", "P3", "D3", "D2"]
print(solve(orders))

อินพุต

["P1", "D1", "P2", "P3", "D3", "D2"]

ผลลัพธ์

True