मान लीजिए, n संख्या के छात्र समूह अपने कॉलेज से घर वापस जाने के लिए कॉलेज बस का इंतजार कर रहे हैं। प्रत्येक छात्र समूह में m संख्या के छात्र हैं। छात्र समूह बस से यात्रा करना चाहते हैं बिना अलग हुए। वे बस में तभी चढ़ते हैं जब उनके समूह के सभी सदस्य बस में चढ़ सकें। साथ ही, एक समूह बस में नहीं चढ़ता यदि उनका पिछला समूह बस में नहीं चढ़ा है या पहले ही अपने गंतव्य पर पहुंच चुका है। यदि हमें समूहों की संख्या और प्रत्येक समूह में छात्रों की संख्या दी गई है, तो हमें बस का आकार ढूंढना है ताकि बस सभी समूहों को ट्रांसपोर्ट कर सके, और हर बार जब बस कॉलेज से शुरू होती है तो बस में कोई खाली जगह न हो।
इसलिए, यदि इनपुट है: groups या gr_no = [3, 4, 2, 2, 1, 4, 3, 5], तो आउटपुट [12, 24] होगा।
यदि बस का आकार 12 है, तो यह पहली ट्रिप पर समूह 1-5 को समाहित कर सकता है, और बाकी समूहों को दूसरी ट्रिप पर।
यदि बस का आकार 24 है, तो यह सभी समूहों को समाहित कर सकता है और उन्हें एक ही ट्रिप में ट्रांसपोर्ट कर सकता है।
हल करने के चरण
- factor_ret() फंक्शन परिभाषित करें जो n लेता है
- निम्नलिखित चरण करें:
- total := gr_no[0] आइटम वाली नई सूची
- i को 1 से gr_no के आकार तक के लिए: total के अंत में total[i-1] + gr_no[i] डालें
- b_sizes := नई सूची
- factor_ret(sum(gr_no)) में प्रत्येक size के लिए:
- temp_list := total से सभी नॉन-जीरो तत्वों की सूची जहां x % size == 0
- index := 1, indicator := True
- temp_list में प्रत्येक point के लिए:
- यदि point != size * index: indicator := False, लूप से बाहर निकलें
- index := index + 1
- यदि indicator True है, तो b_sizes के अंत में size डालें
- b_sizes वापस करें
उदाहरण
from functools import reduce
def solve(gr_no):
total = [gr_no[0]]
for i in range(1, len(gr_no)):
total.append(total[i - 1] + gr_no[i])
b_sizes = []
for size in factor_ret(sum(gr_no)):
temp_list = list(filter(lambda x: x % size == 0, total))
index = 1
indicator = True
for point in temp_list:
if point != size * index:
indicator = False
break
index += 1
if indicator:
b_sizes.append(size)
return b_sizes
def factor_ret(n):
return sorted(set(reduce(list.__add__, ([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0))))
print(solve([3, 4, 2, 2, 1, 4, 3, 5]))
इनपुट
[3, 4, 2, 2, 1, 4, 3, 5]
आउटपुट
[12, 24]