ধরুন, আমাদেরকে n*n আকারের একটি ম্যাট্রিক্স দেওয়া হয়েছে, যেখানে পূর্ণসংখ্যা রয়েছে। আমাদের খুঁজে বের করতে হবে সেই ম্যাট্রিক্সের সমস্ত সারি তার আগের সারির বৃত্তাকার ঘূর্ণন কিনা। প্রথম সারির ক্ষেত্রে, এটি n-ম সারির একটি বৃত্তাকার ঘূর্ণন হওয়া উচিত।
সুতরাং, যদি ইনপুট মত হয়
B | A | D | C |
C | B | A | D |
D | C | B | A |
A | D | C | B |
তাহলে আউটপুট হবে True।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- concat :=ফাঁকা স্ট্রিং
- আমি 0 থেকে সারির সংখ্যার মধ্যে,
- করুন
- concat :=concat concatenate "-" concatenate ম্যাট্রিক্স[0,i]
- concat :=concat concatenate concat
- আমি রেঞ্জ 1 থেকে ম্যাট্রিক্সের আকারের জন্য, কর
- curr_row :=ফাঁকা স্ট্রিং
- 0 থেকে কলামের পরিসরে j এর জন্য, করুন
- curr_row :=curr_row concatenate "-" concatenate ম্যাট্রিক্স[i,j]
- যদি curr_row স্ট্রিং কনক্যাটে উপস্থিত থাকে, তাহলে
- সত্য ফেরান
- মিথ্যে ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(matrix) : concat = "" for i in range(len(matrix)) : concat = concat + "-" + str(matrix[0][i]) concat = concat + concat for i in range(1, len(matrix)) : curr_row = "" for j in range(len(matrix[0])) : curr_row = curr_row + "-" + str(matrix[i][j]) if (concat.find(curr_row)) : return True return False matrix = [['B', 'A', 'D', 'C'], ['C', 'B', 'A', 'D'], ['D', 'C', 'B', 'A'], ['A', 'D', 'C', 'B']] print(solve(matrix))
ইনপুট
[['B', 'A', 'D', 'C'], ['C', 'B', 'A', 'D'], ['D', 'C', 'B', 'A'], ['A', 'D', 'C', 'B']]
আউটপুট
True