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

पायथन में सभी गेंदों को वर्तमान स्थिति में ले जाने के लिए आवश्यक कुल दूरी दिखाने वाली सूची खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक बाइनरी सूची है जिसे nums कहा जाता है जिसमें केवल 0s और 1s होते हैं जहां 0 खाली सेल को इंगित करता है और 1 इंगित करता है कि सेल एक गेंद से भरा हुआ है। हमें मान L की एक नई सूची ढूंढनी है, जिसका आकार भी अंकों के आकार के समान है, जहां L[i] सभी गेंदों को L[i] पर ले जाने के लिए आवश्यक कुल दूरी पर सेट है। यहाँ एक गेंद को सूचकांक j से सूचकांक i तक ले जाने की दूरी है |j - i|.

इसलिए, यदि इनपुट nums =[1, 1, 0, 1] जैसा है, तो आउटपुट [4, 3, 4, 5] होगा, क्योंकि

  • एल[0] =|0 - 0| + |1 - 0| + |3 - 0|
  • एल[1] =|0 - 1| + |1 - 1| + |3 - 1|
  • एल[2] =|0 - 2| + |1 - 2| + |3 - 2|
  • एल[3] =|0 - 3| + |1 - 3| + |3 - 3|

इसलिए, सभी गेंदों को L[1] पर ले जाने के लिए हमें गेंद को इंडेक्स 0 से 1 की दूरी 1 के साथ ले जाना होगा और गेंद को इंडेक्स 3 से 1 की दूरी 2 के साथ ले जाना होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • यदि अंक खाली हैं, तो
    • एक नई सूची लौटाएं
  • बाएं_गिनती :=0
  • right_count :=0
  • बाएं_योग:=0
  • right_sum :=0
  • परिणाम:=एक नई सूची
  • प्रत्येक अनुक्रमणिका और अंकों में मान संख्या के लिए, करें
    • यदि संख्या शून्य नहीं है, तो
      • right_count :=right_count + 1
      • right_sum :=right_sum + index
  • प्रत्येक अनुक्रमणिका और अंकों में मान संख्या के लिए, करें
    • परिणाम के अंत में (बाएं_योग + दायां_योग) डालें
    • यदि संख्या शून्य नहीं है, तो
      • right_count :=right_count - 1
      • बाएं_गिनती :=बाएं_गिनती + 1
    • बाएं_योग :=बायां_योग + बायां_गिनती
    • right_sum :=right_sum - right_count
  • वापसी का परिणाम

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

def solve(nums):
   if not nums:
      return []

   left_count = right_count = 0
   left_sum = right_sum = 0
   result = []

   for index, num in enumerate(nums):
      if num:
         right_count += 1
         right_sum += index

   for index, num in enumerate(nums):
      result.append(left_sum + right_sum)

      if num:
         right_count -= 1
         left_count += 1

      left_sum += left_count
      right_sum -= right_count

   return result

nums = [1, 1, 0, 1]
print(solve(nums))

इनपुट

[1, 1, 0, 1]

आउटपुट

[4, 3, 4, 5]

  1. पायथन में सभी शिपमेंट को पूरा करने के लिए कुल लागत खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास पोर्ट नामक सूचियों की एक सूची है, जहां पोर्ट [i] उन पोर्ट की सूची का प्रतिनिधित्व करता है जिनसे पोर्ट i जुड़ा हुआ है। हमारे पास शिपमेंट्स नामक सूचियों की एक और सूची भी है जहां अनुक्रम की प्रत्येक सूची [i, j] जो दर्शाती है कि पोर्ट i से पोर्ट j तक शिपमेंट अनुरोध है। और पोर्ट I

  1. एक सूची का संचयी योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें संचयी राशि के साथ एक सूची बनानी होगी। आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # cumulative sum def Cumulative(l):    new = []    cumsum = 0   &nb

  1. एक सूची में सभी जोड़ों के बीच पूर्ण अंतर का योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक सूची इनपुट को देखते हुए, हमें सूची में सभी जोड़ों के बीच पूर्ण अंतर का योग खोजने की जरूरत है। गणना करें () विधि एक काउंटर को एक पुनरावर्तनीय में जोड़ती है और इसे एन्यूमरेट ऑब्जेक्ट प्रकार के र