কম্পিউটার টিউটোরিয়াল

পাইথনে বাইনারি ম্যাট্রিক্সে বামপাশের ১-এর কলাম সূচক বের করার প্রোগ্রাম

ধরা যাক একটি ২D বাইনারি ম্যাট্রিক্স দেওয়া আছে। এখানে প্রতিটি সারি অ্যাসেন্ডিং অর্ডারে সর্টেড (০ গুলো ১ গুলোর আগে) থাকে। আমাদের मैट্রিক্সে ১ সম্বলিত সবচেয়ে বামপাশের কলামের সূচক বের করতে হবে। যদি এমন কোনো কলাম না থাকে, তবে -1 ফেরত দিন।

উদাহরণ

ইনপুট ম্যাট্রিক্স:

0001
0011
0011
0010

আউটপুট: 2

ব্যাখ্যা: দ্বিতীয় কলামে (সূচক ২) পুরো ম্যাট্রিক্সের বামপাশের ১ অবস্থিত।

সমাধানের ধাপসমূহ

  1. যদি ম্যাট্রিক্স খালি হয়, তবে -1 ফেরত দিন
  2. N := সারির সংখ্যা, M := কলামের সংখ্যা
  3. i := 0, j := M - 1
  4. leftmost := -1
  5. i < N এবং j >= 0 থাকা পর্যন্ত:
    • যদি matrix[i][j] == 0 হয়, তবে i += 1
    • অন্যথায়:
      • leftmost := j
      • j -= 1
  6. leftmost ফেরত দিন

পাইথন ইমপ্লিমেন্টেশন

class Solution:
    def solve(self, matrix):
        if not matrix or not matrix[0]:
            return -1
        N = len(matrix)
        M = len(matrix[0])
        i = 0
        j = M - 1
        leftmost = -1
        while i < N and j >= 0:
            if matrix[i][j] == 0:
                i += 1
            else:
                leftmost = j
                j -= 1
        return leftmost

ob = Solution()
matrix = [
    [0, 0, 0, 1],
    [0, 0, 1, 1],
    [0, 0, 1, 1],
    [0, 0, 1, 0]
]
print(ob.solve(matrix))

ইনপুট

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

আউটপুট

2
  1. পাইথনে বাইনারি ট্রি-তে BST আছে কিনা যাচাই করার প্রোগ্রাম

  2. পাইথনে বাইনারি ট্রি-তে লিংকড লিস্ট আছে কিনা যাচাই করার প্রোগ্রাম

  3. পাইথনে বাইনারি ট্রিতে k-দৈর্ঘ্যের পথের সংখ্যা খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে ম্যাট্রিক্সের ট্রান্সপোজ বের করা