মান লিজিয়ে আমাদের দুটি N X M ম্যাট্রিক্স আছে যাদের নাম mat1 এবং mat2। একটি অপারেশনে, আমরা mat1-এ যেকোনো স্কোয়ার সাব-ম্যাট্রিক্স ট্রান্সপোজ করতে পারি। আমাদের যাচাই করতে হবে দেওয়া অপারেশনগুলো করলে mat1 থেকে mat2 পাওয়া যায় কিনা।
যেমন, ইনপুট যদি:
| 5 | 6 | 7 |
| 1 | 2 | 3 |
| 6 | 8 | 9 |
| 5 | 6 | 2 |
| 1 | 7 | 3 |
| 6 | 8 | 9 |
তবে আউটপুট হবে True, কারণ mat1-এর উপরের ডানপাশের 2x2 সাইজের সাব-ম্যাট্রিক্স ট্রান্সপোজ করলে mat2 পাওয়া যাবে।
সমাধানের ধাপসমূহ
row :=ম্যাট্রিক্সের রো কাউন্টcolumn :=ম্যাট্রিক্সের কলাম কাউন্টi০ থেকেrow - 1পর্যন্ত, করুন:temp1 :=একটি নতুন লিস্ট,temp2 :=একটি নতুন লিস্টr := i, col := 0- যখন
r >= 0এবংcol < column, করুন:mat1[r, col]temp1-এ ইনসার্ট করুনmat2[r, col]temp2-এ ইনসার্ট করুনr := r - 1, col := col + 1
temp1এবংtemp2সর্ট করুনi০ থেকেtemp1-এর সাইজ - ১ পর্যন্ত, করুন:- যদি
temp1[i]temp2[i]সমান না হয়, তবে:Falseরিটার্ন করুন
- যদি
j১ থেকেcolumn - 1পর্যন্ত, করুন:temp1 :=একটি নতুন লিস্ট,temp2 :=একটি নতুন লিস্টr := row - 1, col := j- যখন
r >= 0এবংcol < column, করুন:mat1[r, col]temp1-এ ইনসার্ট করুনmat2[r, col]temp2-এ ইনসার্ট করুনr := r - 1, col := col + 1
temp1এবংtemp2সর্ট করুনi০ থেকেtemp1-এর সাইজ - ১ পর্যন্ত, করুন:- যদি
temp1[i]temp2[i]সমান না হয়, তবে:Falseরিটার্ন করুন
- যদি
Trueরিটার্ন করুন
উদাহরণ
বेहतर বোঝার জন্য নিচের বাস্তবায়নটি দেখুন:
def solve(mat1, mat2):
row = len(mat1)
column = len(mat1[0])
for i in range(row):
temp1 = []
temp2 = []
r = i
col = 0
while r >= 0 and col < column:
temp1.append(mat1[r][col])
temp2.append(mat2[r][col])
r -= 1
col += 1
temp1.sort()
temp2.sort()
for i in range(len(temp1)):
if temp1[i] != temp2[i]:
return False
for j in range(1, column):
temp1 = []
temp2 = []
r = row - 1
col = j
while r >= 0 and col < column:
temp1.append(mat1[r][col])
temp2.append(mat2[r][col])
r -= 1
col += 1
temp1.sort()
temp2.sort()
for i in range(len(temp1)):
if temp1[i] != temp2[i]:
return False
return True
mat1 = [
[5, 6, 7],
[1, 2, 3],
[6, 8, 9]]
mat2 = [
[5, 6, 2],
[1, 7, 3],
[6, 8, 9]]
print(solve(mat1, mat2))
ইনপুট
[[5, 6, 7], [1, 2, 3], [6, 8, 9]], [[5, 6, 2], [1, 7, 3], [6, 8, 9]]
আউটপুট
True