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

पायथन में 0 से भरे सभी आयतों को खोजें

मान लीजिए कि हमारे पास एक द्विआधारी 2D मैट्रिक्स है, अब हमें 0s से भरे सभी आयतों का प्रारंभिक बिंदु और समाप्ति बिंदु खोजना होगा। हमें यह ध्यान रखना होगा कि आयताकार अलग-अलग होते हैं और एक-दूसरे को स्पर्श नहीं करते हैं, हालांकि वे सरणी सीमा को छू सकते हैं। केवल एक तत्व वाला आयत भी संभव है।

तो, अगर इनपुट इस तरह है -

1 0 1 1 1 0 1
1 1 0 1 1 1 1
1 0 1 1 0 0 1
1 0 1 1 0 0 1
1 0 1 1 0 1 1
1 0 1 0 0 0 0
1 1 1 0 0 0 1
1 0 1 1 1 0 1

तो आउटपुट [[0, 1, 0, 1], [0, 5, 0, 5], [1, 2, 1, 2], [2, 3, 2, 4], [3, 1' होगा। , 5, 1], [3, 4, 6, 5], [5, 3, 6, 5], [7, 1, 7, 1], [7, 5, 7, 5]]

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

  • एक फ़ंक्शन को परिभाषित करें find_rect() । यह i,j,a,output,index
  • . लेगा
  • x :=पंक्ति गणना
  • y :=कॉल काउंट
  • flag_col:=0
  • flag_row :=0
  • i से x की श्रेणी में m के लिए, करें
    • यदि a[m, j] 1 के समान है, तो
      • flag_row :=1
      • ब्रेक
    • यदि a[m, j] 5 के समान है, तो
      • कुछ न करें
    • n के लिए j से y की श्रेणी में, करें
      • यदि a[m, n] 1 के समान है, तो
        • flag_col :=1
        • ब्रेक
      • a[m, n] :=5
    • यदि ध्वज_पंक्ति 1 के समान है, तो
      • आउटपुट के अंत में एम-1 डालें[इंडेक्स]
    • अन्यथा,
      • आउटपुट के अंत में m डालें[इंडेक्स]
    • अगर फ्लैग_कॉल 1 के समान है, तो
      • आउटपुट के अंत में n-1 डालें[इंडेक्स]
    • अन्यथा,
      • आउटपुट के अंत में n डालें[इंडेक्स]
  • मुख्य विधि से, निम्न कार्य करें -
  • n :=एक का आकार
  • op :=एक नई सूची
  • आईडीएक्स:=-1
  • मैं के लिए 0 से n की सीमा में, करते हैं
    • जे के लिए 0 से लेकर एक [0] के आकार के लिए, करें
      • यदि a[i, j] 0 के समान है, तो
        • ऑप में [i,j] डालें
        • idx :=idx + 1
        • find_rect(i, j, a, op, idx)
  • प्रदर्शन सेशन

उदाहरण कोड

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

def find_rect(i,j,a,output,index):
   x = len(a)
   y = len(a[0])
   flag_col = 0
   flag_row = 0
   for m in range(i,x):
      if a[m][j] == 1:
         flag_row = 1
         break
      if a[m][j] == 5:
         pass
      for n in range(j, y):
         if a[m][n] == 1:
            flag_col = 1
            break
         a[m][n] = 5
   if flag_row == 1:
      output[index].append( m-1)
   else:
      output[index].append(m)
   if flag_col == 1:
      output[index].append(n-1)
   else:
      output[index].append(n)
def get_coord(a):
   n = len(a)
   op = []
   idx = -1
   for i in range(0,n):
      for j in range(0, len(a[0])):
         if a[i][j] == 0:
         op.append([i, j])
         idx = idx + 1
         find_rect(i, j, a, op, idx)
   print (op)
tests = [[1, 0, 1, 1, 1, 0, 1],
         [1, 1, 0, 1, 1, 1, 1],
         [1, 1, 1, 0, 0, 1, 1],
         [1, 0, 1, 1, 0, 0, 1],
         [1, 0, 1, 1, 0, 1, 1],
         [1, 0, 1, 0, 0, 0, 0],
         [1, 1, 1, 0, 0, 0, 1],
         [1, 0, 1, 1, 1, 0, 1]]
get_coord(tests)

इनपुट

[[1, 0, 1, 1, 1, 0, 1],
[1, 1, 0, 1, 1, 1, 1],
[1, 1, 1, 0, 0, 1, 1],
[1, 0, 1, 1, 0, 0, 1],
[1, 0, 1, 1, 0, 1, 1],
[1, 0, 1, 0, 0, 0, 0],
[1, 1, 1, 0, 0, 0, 1],
[1, 0, 1, 1, 1, 0, 1]]

आउटपुट

[[0, 1, 0, 1], [0, 5, 0, 5], [1, 2, 1, 2], [2, 3, 2, 4], [3, 1, 5, 1], [3, 4, 6, 5], [5, 3, 6, 5], [7, 1, 7, 1], [7, 5, 7, 5]]

  1. पायथन में n नोड्स के साथ सभी सरल अप्रत्यक्ष रेखांकन की लागत का योग खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास n नोड्स के साथ एक अप्रत्यक्ष ग्राफ G है। अब विचार करें कि एक साधारण अप्रत्यक्ष ग्राफ की लागत इसके नोड्स की लागत का योग है। और एक नोड की लागत डी^के है, जहां डी इसकी डिग्री है। अब हमारे पास n और k मान हैं। हमें n नोड्स के साथ सभी संभव सरल अप्रत्यक्ष रेखांकन की लागतों का योग ज्ञा

  1. पायथन में दो आयतों द्वारा कवर किए गए कुल क्षेत्रफल को खोजने का कार्यक्रम

    मान लीजिए कि हम एक 2D समतल में दो आयताकार आयतों द्वारा कवर किए गए कुल क्षेत्रफल को ज्ञात करना चाहते हैं। यहाँ प्रत्येक आयत को उसके निचले बाएँ कोने और ऊपरी दाएँ कोने से परिभाषित किया गया है जैसा कि चित्र में दिखाया गया है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - चौड़ाई_1 :=|सी-ए|, ऊंचाई_

  1. पाइथन में एक्सटेंशन .txt वाली निर्देशिका में सभी फ़ाइलों को कैसे खोजें?

    आप निर्देशिका में सभी निर्देशिकाओं और फ़ाइलों को प्राप्त करने के लिए os.listdir विधि का उपयोग कर सकते हैं। फिर केवल फ़ाइलें प्राप्त करने के लिए सूची को फ़िल्टर करें और उनके एक्सटेंशन भी जांचें। उदाहरण के लिए >>> import os >>> file_list = [f for f in os.listdir('.') if os.pa