मान लीजिए, हमें n*n आकार का एक मैट्रिक्स प्रदान किया गया है, जिसमें पूर्णांक संख्याएँ हैं। हमें यह पता लगाना है कि उस मैट्रिक्स की सभी पंक्तियाँ उसकी पिछली पंक्ति की सर्कुलर रोटेशन हैं या नहीं। पहली पंक्ति के मामले में, यह n-वीं पंक्ति की सर्कुलर रोटेशन होनी चाहिए।
इसलिए, यदि इनपुट इस तरह है:
| B | A | D | C |
| C | B | A | D |
| D | C | B | A |
| A | D | C | B |
तो आउटपुट True होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- concat := खाली स्ट्रिंग
- i को 0 से पंक्तियों की संख्या तक के लिए, करें:
- concat := concat + "-" + matrix[0,i]
- concat := concat + concat
- i को 1 से मैट्रिक्स के आकार तक के लिए, करें:
- curr_row := खाली स्ट्रिंग
- j को 0 से स्तंभों की संख्या तक के लिए, करें:
- curr_row := curr_row + "-" + matrix[i,j]
- यदि curr_row स्ट्रिंग concat में मौजूद है, तो:
- True वापस करें
- False वापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
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) != -1):
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