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

পাইথনে প্রতিটি কনডোমিনিয়ামের উচ্চতা সর্বাধিক সম্ভাব্য উচ্চতায় বৃদ্ধি করার জন্য ম্যাট্রিক্স খুঁজে বের করার প্রোগ্রাম

ধরা যাক একটি ২D ম্যাট্রিক্স রয়েছে, যেখানে matrix[r][c] একটি শহরে কনডোমিনিয়ামের উচ্চতা প্রতিনিধিত্ব করে। পশ্চিম-পূর্ব দৃশ্যেখ linii (west-east skyline) ম্যাট্রিক্সের প্রতিটি সারির সর্বোচ্চ মান নিয়ে দেখা যায়। আর উত্তর-দক্ষিণ দৃশ্যেখ linii (north-south skyline) প্রতিটি কলামের সর্বোচ্চ মান নিয়ে দেখা যায়। আমাদের একটি নতুন ম্যাট্রিক্স খুঁজে বের করতে হবে যেখানে প্রতিটি কনডোমিনিয়ামের উচ্চতা সর্বাধিক সম্ভাব্য উচ্চতায় বৃদ্ধি করা হয়েছে, কিন্তু পশ্চিম-পূর্ব এবং উত্তর-দক্ষিণ দৃশ্যেখ লাইনগুলি অপরিবর্তিত রাখা হয়েছে।

উদাহরণ

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

234
567
8910

আউটপুট ম্যাট্রিক্স:

444
777
8910

এখানে পশ্চিম-পূর্ব দৃশ্যেখ লাইন হলো [4, 7, 10] এবং উত্তর-দক্ষিণ দৃশ্যেখ লাইন হলো [8, 9, 10]। আমরা প্রথম সারির সব মান ৪ এবং দ্বিতীয় সারির সব মান ৭ করে দিতে পারি দৃশ্যেখ লাইন পরিবর্তন না করে।

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

  1. r := ম্যাট্রিক্সের প্রতিটি সারির সর্বোচ্চ মানগুলির একটি লিস্ট
  2. c := ম্যাট্রিক্সের প্রতিটি কলামের সর্বোচ্চ মানগুলির একটি লিস্ট
  3. ম্যাট্রিক্সের সারি সংখ্যা পরিমাণে i এর জন্য লুপ চালান
  4. ম্যাট্রিক্সের কলাম সংখ্যা পরিমাণে j এর জন্য লুপ চালান
  5. যদি r[i] < c[j] হয়, তবে matrix[i][j] := r[i]
  6. অন্যথায়, matrix[i][j] := c[j]
  7. আপডেট করা ম্যাট্রিক্স ফেরত দিন

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

class Solution:
    def solve(self, matrix):
        r = [max(row) for row in matrix]
        c = [max(col) for col in zip(*matrix)]
        for i in range(len(matrix)):
            for j in range(len(matrix[i])):
                if r[i] < c[j]:
                    matrix[i][j] = r[i]
                else:
                    matrix[i][j] = c[j]
        return matrix

ob = Solution()
matrix = [
    [2, 3, 4],
    [5, 6, 7],
    [8, 9, 10]
]
print(ob.solve(matrix))

ইনপুট

[[2, 3, 4], [5, 6, 7], [8, 9, 10]]

আউটপুট

[[4, 4, 4], [7, 7, 7], [8, 9, 10]]
  1. Python-এ সর্বোচ্চ বিল্ডিং হাইট বের করার প্রোগ্রাম

  2. পাইথনে সব সম্ভাব্য বৈধ পথ থেকে সর্বোচ্চ স্কোর বের করার প্রোগ্রাম

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

  4. পাইথন প্রোগ্রাম: সিলিন্ডারের পেরিমিটার বের করা