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

โปรแกรมหาเวลารอเฉลี่ยใน Python


สมมติว่าเรามีลูกค้าอาร์เรย์ โดยที่ลูกค้า[i] =ถือคู่ [arrival_i, time_i] ที่นี่ arrival_i คือเวลาที่ลูกค้ามาถึง และเวลาที่มาถึงจะเรียงลำดับจากน้อยไปมาก และ time_i คือเวลาที่จำเป็นในการเตรียมคำสั่งซื้อของลูกค้า ith ตอนนี้ เมื่อลูกค้ามาถึง เขา/เธอออกคำสั่ง และมีเพียงคำสั่งเดียวที่เริ่มเตรียมการเมื่อพ่อครัวไม่ได้ใช้งาน พ่อครัวไม่ได้เตรียมอาหารให้กับลูกค้ามากกว่าหนึ่งรายในแต่ละครั้ง และเขาเตรียมการเพื่อให้พวกเขาได้รับคำสั่ง เราต้องหาเวลารอโดยเฉลี่ยของลูกค้าทั้งหมด

ดังนั้นหากอินพุตเป็นเหมือนลูกค้า =[[7,2],[8,4],[10,3],[20,1]] ผลลัพธ์จะเป็น 3.5 เพราะ,

  • ลูกค้าคนแรกมาเวลา 7 พ่อครัวรับคำสั่งและเริ่มเตรียมทันทีที่ 7 และเสร็จสิ้นในเวลา 9 ดังนั้นเวลารอสำหรับลูกค้าคนแรกคือ 9 - 7 =2

  • ลูกค้าคนที่สองมาเวลา 8 เชฟรับคำสั่งและเริ่มทำอาหารเวลา 9 และเสร็จสิ้นเวลา 13 ดังนั้นเวลารอของลูกค้าคนที่สองคือ 13 - 8 =5.

  • ลูกค้าคนที่สามมาที่เวลา 10 เชฟรับคำสั่งและเริ่มทำอาหารเวลา 13 และเสร็จสิ้นเวลา 16 ดังนั้นเวลารอสำหรับลูกค้าคนที่สามคือ 16 - 10 =6

  • ลูกค้าคนที่สี่มาที่เวลา 20 เชฟรับคำสั่งและเริ่มทำอาหารทันทีที่ 20 และเสร็จสิ้นในเวลา 21 ดังนั้นเวลารอของลูกค้าคนที่สี่คือ 21 - 20 =1

  • ดังนั้นเวลารอเฉลี่ย =(2 + 5 + 6 + 1) / 4 =3.5.

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

  • arr :=รายการใหม่
  • เวลา :=0
  • สำหรับแต่ละคู่ (i, j) ในตัวลูกค้า ทำ
    • ถ้าฉัน> เวลา แล้ว
      • เวลา :=i + j
    • มิฉะนั้น
      • เวลา :=เวลา + j
  • ใส่ (time-i) ต่อท้าย arr
  • คืนสินค้า (เฉลี่ยของทุกรายการเป็น arr)

ตัวอย่าง

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

def solve(customers):
   arr = []

   time = 0

   for i , j in customers:
      if(i > time):
         time = i + j
      else:
         time += j
      arr.append(time - i)

   return sum(arr) / len(arr)

customers = [[7,2],[8,4],[10,3],[20,1]]
print(solve(customers))

อินพุต

[[7,2],[8,4],[10,3],[20,1]]

ผลลัพธ์

3