Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

Python में समूह में सभी दोस्तों को समाहित करने वाली बस का आकार खोजें

मान लीजिए, 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]
  1. पायथन में ग्राफ में सबसे बड़े क्लिक का न्यूनतम आकार ज्ञात करने का प्रोग्राम पायथन में ग्राफ में सबसे बड़े क्लिक का न्यूनतम आकार ज्ञात करने का प्रोग्राम

    मान लीजिए हमें एक ग्राफ दिया गया है और हमें उसमें सबसे बड़े क्लिक का न्यूनतम आकार ढूंढना है। एक ग्राफ का क्लिक ग्राफ का एक उपसमुच्चय है जहां हर जोड़ी शीर्ष आसन्न होती है, यानी हर जोड़ी शीर्ष के बीच एक किनारा मौजूद होता है। ग्राफ में सबसे बड़ा क्लिक ढूंढना बहुपद समय में संभव नहीं है, इसलिए छोटे ग्रा

  1. पायथन में जांचें कि ग्राफ सभी द्वारा पारगम्य है या नहीं पायथन में जांचें कि ग्राफ सभी द्वारा पारगम्य है या नहीं

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्ष हैं जो 0 से n-1 तक क्रमांकित हैं। ग्राफ अनिर्देशित है और प्रत्येक किनारे का एक भार है। ग्राफ में तीन प्रकार के भार हो सकते हैं और प्रत्येक भार एक विशेष कार्य को दर्शाता है। दो लोग हैं जो ग्राफ को पार कर सकते हैं, अर्थात् जैक और केसी। जैक ग्राफ को

  1. Python में गोदाम में कितने बॉक्स रखे जा सकते हैं, इसका प्रोग्राम Python में गोदाम में कितने बॉक्स रखे जा सकते हैं, इसका प्रोग्राम

    मान लीजिए, हमारे पास दो सरणियाँ हैं जिनमें पूर्णांक हैं। एक सूची में कुछ यूनिट चौड़ाई वाले बॉक्स की ऊंचाई है और दूसरी सरणी में गोदाम में कमरों की ऊंचाई है। कमरे 0...n से नंबर किए गए हैं, और कमरों की ऊंचाई सरणी godown में उनके संबंधित इंडेक्स पर दी गई है। हमें उन बॉक्स की संख्या पता करनी है जिन्हें ग