মান লো যাক আমাদের একটি টু-ডাইমেনশনাল বাইনারি ম্যাট্রিক্স আছে, যা একটি রেকট্যাঙ্গুলার শतरঞ্জ বোর্ডকে প্রতিনিধিত্ব করে, এখানে 0 খালি সেল এবং 1 নাইট के लिए। নাইট দুটি স্কোয়ার হরিজেন্টালি এবং একটি স্কোয়ার ভার্টিক্যালি, অথবা দুটি স্কোয়ার ভার্টিক্যালি এবং একটি স্কোয়ার হরিজেন্টালি যেতে পারে (শतरঞ্জ বোর্ডের নাইটের মতো)। আমাদের যাচাই করতে হবে কোনো দুটি নাইট একে অপর আক্রমণ করছে কিনা।
উদাহরণস্বরূপ, যদি ইনপুট হয়
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 0 | 0 |
| 0 | 0 | 0 | 1 | 0 |
তবে আউটপুট হবে True
এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব:
- row, col := ম্যাট্রিক্সের রো কাউন্ট, কলাম কাউন্ট
- r के लिए 0 से row-1 तक की रेंज में, करें
- c के लिए 0 से col-1 तक की रेंज में, करें
- यदि A[r][c] शून्येतर है, तो
- প্রতিটি nr, nc [(r+1, c-2), (r+1, c+2), (r+2, c-1), (r+2, c+1)] के लिए, करें
- यदि nr row के रेंज में है और nc col के रेंज में है और A[nr, nc] शून्येतर है, तो
- True रिटर्न करें
- यदि nr row के रेंज में है और nc col के रेंज में है और A[nr, nc] शून्येतर है, तो
- প্রতিটি nr, nc [(r+1, c-2), (r+1, c+2), (r+2, c-1), (r+2, c+1)] के लिए, करें
- यदि A[r][c] शून्येतर है, तो
- c के लिए 0 से col-1 तक की रेंज में, करें
- False रिटर्न करें
বेहतर বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখুন:
উদাহরণ
class Solution: def solve(self, A): row, col = len(A), len(A[0]) for r in range(row): for c in range(col): if A[r][c]: for nr, nc in ((r+1, c-2), (r+1, c+2), (r+2, c-1), (r+2, c+1)): if 0 <= nr < row and 0 <= ncইনপুট
[[0,0,0,0,0], [0,1,0,0,0], [0,0,0,1,0]]আউটপুট
True