Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで平均待機時間を見つけるプログラム


配列customersがあり、customers [i] =ペア[arrival_i、time_i]を保持しているとします。ここで、arrival_iはi番目の顧客の到着時刻です。また、到着時間は短いものから高いものへと並べ替えられます。また、time_iは、i番目の顧客の注文を準備するために必要な時間です。これで、顧客が到着すると注文を出し、料理人がアイドル状態のときにその注文だけが準備を開始します。料理人は一度に複数の顧客のために料理を準備しません。そして、彼は彼らが注文された順番で準備します。すべての顧客の平均待機時間を見つける必要があります。

したがって、入力がcustomers =[[7,2]、[8,4]、[10,3]、[20,1]]の場合、出力は3.5になります。

  • 最初の顧客は時間7に来て、料理人は注文を受け取り、時間7ですぐに準備を開始し、時間9で終了するため、最初の顧客の待機時間は9-7=2です。

  • 2番目の顧客は時間8に来て、シェフは注文を受け取り、時間9に準備を開始し、時間13に終了するため、2番目の顧客の待機時間は13-8=5です。

  • 3番目の顧客は時間10に来て、シェフは注文を受け取り、時間13に準備を開始し、時間16に終了するため、3番目の顧客の待機時間は16-10=6です。

  • 4番目の顧客は時間20に来て、シェフは注文を受け取り、時間20ですぐに準備を開始し、時間21で終了するため、4番目の顧客の待機時間は21-20=1です。

  • したがって、平均待機時間=(2 + 5 + 6 + 1)/ 4=3.5。

これを解決するには、次の手順に従います-

  • arr:=新しいリスト
  • 時間:=0
  • 顧客のペア(i、j)ごとに、
    • i>時間の場合、
      • 時間:=i + j
    • それ以外の場合、
      • 時間:=時間+ j
  • 到着の最後に(time-i)を挿入します
  • 返品(到着したすべてのアイテムの平均)

理解を深めるために、次の実装を見てみましょう-

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

  1. Pythonでポリゴンの領域を見つけるプログラム

    順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの領域を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は15になります。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です return x1 * y2-y1 * x2 メインの方法から、次の手順を実行します N:=ポイントのサイズ (firstx、firsty):=points [0] (prevx、prevy):=(fir

  2. Pythonでポリゴンの周囲を見つけるプログラム

    順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの周囲を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は16になります。 2つの辺の長さは3で、2つの辺の長さは5なので、2 * 5 + 2 * 3=16です。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です ユークリッド距離である((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))の平方根を返します (x1、y1)