मान लीजिए हमारे पास एक सरणी 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 है।
दूसरा ग्राहक समय 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 := एक नई सूची
- time := 0
- customers में प्रत्येक जोड़ी (i, j) के लिए, करें
- यदि i > time, तो
- time := i + j
- अन्यथा,
- time := time + j
- यदि i > time, तो
- (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