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

পাইথনে সাব-ম্যাট্রিক্সের কনার এলিমেন্টের প্যারিটি পরিবর্তন করে ম্যাট্রিক্স A কে B-তে রূপান্তর করা সম্ভব কিনা তা যাচাই করা

মান লিজিয়ে আমাদের দুটি N X M বাইনারি ম্যাট্রিক্স A এবং B আছে। একটি অপারেশনে, আমরা একটি সাব-ম্যাট্রিক্স (কমপক্ষে 2x2) সিলেক্ট করতে পারি এবং কনার এলিমেন্টগুলোর প্যারিটি পরিবর্তন করতে পারি (বিট ফ্লিপ)। 最終ত, আমাদের যাচাই করতে হবে যেকোনো সংখ্যক অপারেশন করলে ম্যাট্রিক্স A কি B-তে রূপান্তর করা সম্ভব কিনা।

যেমন, ইনপুট যদি:

100
101
100


পাইথনে সাব-ম্যাট্রিক্সের কনার এলিমেন্টের প্যারিটি পরিবর্তন করে ম্যাট্রিক্স A কে B-তে রূপান্তর করা সম্ভব কিনা তা যাচাই করা

তবে আউটপুট হবে True কারণ mat1-এর উপরের বামপাশের 2x2 স্কোয়ার সাব-ম্যাট্রিক্স-এ অপারেশন করলে mat2 পাওয়া যাবে।

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

  • row := mat1-এর রো কাউন্ট
  • column := mat1-এর কলাম কাউন্ট
  • i ১ থেকে row - 1 পর্যন্ত, করুন:
    • j ১ থেকে column - 1 পর্যন্ত, করুন:
      • যদি mat1[i, j] mat2[i, j] সমান না হয়, তবে:
        • mat1[i, j] := mat1[i, j] XOR 1
        • mat1[0, 0] := mat1[0, 0] XOR 1
        • mat1[0, j] := mat1[0, j] XOR 1
        • mat1[i, 0] := mat1[i, 0] XOR 1
  • i ০ থেকে row - 1 পর্যন্ত, করুন:
    • j ০ থেকে column - 1 পর্যন্ত, করুন:
      • যদি mat1[i, j] mat2[i, j] সমান না হয়, তবে:
        • False রিটার্ন করুন
  • True রিটার্ন করুন

উদাহরণ

বेहतर বোঝার জন্য নিচের বাস্তবায়নটি দেখুন:

def solve(mat1, mat2):
    row = len(mat1)
    column = len(mat1[0])
    for i in range(1, row):
        for j in range(1, column):
            if mat1[i][j] != mat2[i][j]:
                mat1[i][j] ^= 1
                mat1[0][0] ^= 1
                mat1[0][j] ^= 1
                mat1[i][0] ^= 1
    for i in range(row):
        for j in range(column):
            if mat1[i][j] != mat2[i][j]:
                return False
    return True

mat1 = [
    [1, 0, 0],
    [1, 0, 1],
    [1, 0, 0]]
mat2 = [
    [0, 1, 0],
    [0, 1, 1],
    [1, 0, 0]]
print(solve(mat1, mat2))

ইনপুট

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

আউটপুট

True
  1. পাইথনে টেনসরফ্লো ব্যবহার করে ম্যাট্রিক্সের নির্দিষ্ট উপাদান/সারি যোগ করার পদ্ধতি

  2. পাইথনে ম্যাট্রিক্সের খালি সেল N টি বেছে নেওয়ার কতভাবে আছে তা চেক করার প্রোগ্রাম

  3. পাইথনে A কি B-র সুপারক্লাস তা কীভাবে চেক করবেন?

  4. পাইথনে স্ট্রিং ফ্লোট-এ কনভার্ট করা যায় কিনা যাচাই করা