Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm thời gian chờ trung bình bằng Python

Giả sử chúng ta có một mảng khách hàng, trong đó khách hàng [i] =có một cặp [đến_i, thời gian_i], ở đây đến_i là thời gian đến của khách hàng thứ i. Và thời gian đến được sắp xếp từ ít đến cao. Và time_i là thời gian cần thiết để chuẩn bị đơn hàng của khách hàng thứ i. Bây giờ, khi một khách hàng đến, anh ta / cô ta sẽ gọi món, và món duy nhất đó bắt đầu được chuẩn bị khi đầu bếp rảnh rỗi. Người đầu bếp không chuẩn bị thức ăn cho nhiều khách hàng cùng một lúc. Và anh ta chuẩn bị theo thứ tự họ đã đặt hàng. Chúng tôi phải tìm ra thời gian chờ đợi trung bình của tất cả khách hàng.

Vì vậy, nếu đầu vào giống như khách hàng =[[7,2], [8,4], [10,3], [20,1]], thì đầu ra sẽ là 3,5 vì,

  • Khách hàng đầu tiên đến vào lúc 7, đầu bếp nhận order và bắt đầu chuẩn bị ngay lúc 7 và kết thúc vào lúc 9, do đó thời gian chờ của khách hàng đầu tiên là 9 - 7 =2.

  • Khách hàng thứ hai đến vào lúc 8 giờ, đầu bếp nhận món và bắt đầu chuẩn bị vào lúc 9, và kết thúc lúc 13, do đó thời gian chờ của khách thứ hai là 13 - 8 =5.

  • Khách hàng thứ ba đến vào lúc 10 giờ, đầu bếp nhận món và bắt đầu chuẩn bị vào lúc 13, và hoàn thành lúc 16, do đó thời gian chờ của khách thứ ba là 16 - 10 =6.

  • Khách hàng thứ tư đến lúc 20, đầu bếp nhận món và bắt đầu chuẩn bị ngay lúc 20, và hoàn thành lúc 21, do đó thời gian chờ của khách thứ tư là 21 - 20 =1.

  • Vậy thời gian chờ trung bình =(2 + 5 + 6 + 1) / 4 =3,5.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • arr:=một danh sách mới
  • thời gian:=0
  • đối với mỗi cặp (i, j) trong khách hàng, hãy thực hiện
    • nếu tôi> thời gian, thì
      • thời gian:=i + j
    • nếu không,
      • thời gian:=time + j
  • chèn (time-i) vào cuối arr
  • lợi nhuận (trung bình của tất cả các mục trong arr)

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

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

Đầu ra

3