ধরুন আমাদের একটি ম্যাট্রিক্স ম্যাট আছে। নিম্নরূপ কয়েকটি ভিন্ন মান রয়েছে ম্যাট্রিক্সের কোষগুলি এই 3টি অক্ষরের যেকোনো একটি ধারণ করতে পারে
- খালি এলাকার জন্য 0।
- বোমার জন্য 1।
- 2 শত্রুদের জন্য।
এখন বোমা এক প্রান্ত থেকে অন্য প্রান্তে শুধুমাত্র অনুভূমিক এবং উল্লম্ব দিকগুলিতে বিস্ফোরণ করতে পারে। আমাদের পরীক্ষা করতে হবে যে বোমা বিস্ফোরণে সমস্ত শত্রু মারা যাবে কি না৷
সুতরাং, যদি ইনপুট মত হয়
0 | 0 | 2 | 0 |
0 | 1 | 0 | 0 |
0 | 2 | 0 | 0 |
0 | 0 | 1 | 0 |
তাহলে আউটপুট True হবে, কারণ [1, 1] স্থানে বোমাটি [2, 1] স্থানে শত্রুকে পূরণ করতে পারে এবং [0, 2] এ [3, 2] এ রাখা বোমা দ্বারা শত্রুকে হত্যা করা হবে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- r :=মাদুরের সারি গণনা
- c :=কলের মাদুর গণনা
- i :=0, j :=0, x :=0, y :=0
- আমি 0 থেকে r - 1 রেঞ্জের জন্য, কর
- 0 থেকে c - 1 রেঞ্জের মধ্যে j-এর জন্য
- করুন
- যদি mat[i, j] 1 হয়, তাহলে
- 0 থেকে r - 1 রেঞ্জের x এর জন্য
- করুন
- যদি mat[x, j] 1 না হয়, তাহলে
- mat[x, j] :=0
0 থেকে c - 1 এর মধ্যে y এর জন্য - যদি mat[x, j] 1 না হয়, তাহলে
- করুন
- যদি mat[i, y] 1 না হয়, তাহলে
- mat[i, y] :=0
- যদি mat[i, y] 1 না হয়, তাহলে
- করুন
- যদি mat[i, j] 1 হয়, তাহলে
- করুন
- আমি 0 থেকে r - 1 রেঞ্জের জন্য, কর
- 0 থেকে c - 1 রেঞ্জে j-এর জন্য
- করুন
- যদি mat[i, j] 2 হয়, তাহলে
- মিথ্যে ফেরত দিন
- যদি mat[i, j] 2 হয়, তাহলে
- করুন
- সত্য ফেরান
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
def solve(mat): r = len(mat) c = len(mat[0]) i, j, x, y = 0, 0, 0, 0 for i in range(r): for j in range(c): if mat[i][j] == 1: for x in range(r): if mat[x][j] != 1: mat[x][j] = 0 for y in range(c): if mat[i][y] != 1: mat[i][y] = 0 for i in range(r): for j in range(c): if mat[i][j] == 2: return False return True matrix = [ [0,0,2,0], [0,1,0,0], [0,2,0,0], [0,0,1,0] ] print(solve(matrix))
ইনপুট
[ [0,0,2,0], [0,1,0,0], [0,2,0,0], [0,0,1,0] ]
আউটপুট
True