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

โปรแกรมเพื่อจัดเรียงเมลที่สำคัญจากเมลบ็อกซ์ต่าง ๆ ใน Python


สมมติว่าเรามีรายชื่อกล่องจดหมาย ที่นี่ในแต่ละเมลบ็อกซ์ รายการสตริงจะได้รับ โดยแต่ละสตริงคือ "J" สำหรับขยะ "P" สำหรับส่วนบุคคล "W" สำหรับที่ทำงาน เราจะตรวจสอบกล่องจดหมายแต่ละกล่องโดยเรียงลำดับแบบวนซ้ำโดยเริ่มจากกล่องจดหมายแรก กรอง J เพื่อสร้างรายการเดียวและส่งคืนรายการ

ดังนั้น ถ้าอินพุตเป็นเหมือนเมลบ็อกซ์ =[["W", "P"],["J", "P", "J"],["W"]] เอาต์พุตจะเป็น ["W" , "W", "P", "P"] ตามคำสั่งและไม่มีการกรอง เรามี W -> J -> W -> P -> P -> J ตอนนี้เนื่องจากเรากรองขยะออก เราจึงได้ W -> W -> P -> P.

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

  • n_mailboxes :=ขนาดของกล่องจดหมาย
  • ผลลัพธ์ :=รายการใหม่
  • นับ :=รายการขนาด n_mailboxes จากนั้นเติม 0
  • เพิ่มเติม :=จริง
  • ยิ่งไม่เป็นศูนย์ ก็ทำ
    • เพิ่มเติม :=เท็จ
    • สำหรับฉันในช่วง 0 ถึง n_mailboxes ทำ
      • ดัชนี :=นับ[i], กล่องจดหมาย :=กล่องจดหมาย[i]
      • ถ้าดัชนี <ขนาดของเมลบ็อกซ์แล้ว
        • เพิ่มเติม :=จริง
        • นับ[i] :=นับ[i] + 1
        • เมล :=กล่องจดหมาย[ดัชนี]
        • ถ้าเมลไม่เหมือนกับ "J" งั้น
          • แทรกเมลที่ส่วนท้ายของผลลัพธ์
  • ผลตอบแทน

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

ตัวอย่าง

class Solution:
   def solve(self, mailboxes):
      n_mailboxes = len(mailboxes)
      result = []
      counts = [0]*n_mailboxes
      more = True
      while more:
         more = False
         for i in range(n_mailboxes):
            index, mailbox = counts[i], mailboxes[i]
            if index < len(mailbox):
               more = True
               counts[i] += 1
               mail = mailbox[index]
               if mail != "J":
                  result.append(mail)
         return result
ob = Solution()
mailboxes = [["W", "P"],["J", "P", "J"],["W"]]
print(ob.solve(mailboxes))

อินพุต

[["W", "P"],["J", "P", "J"],["W"]]

ผลลัพธ์

['W', 'W', 'P', 'P']