ধরা যাক একটি বাইনারি ম্যাট্রিক্স আছে যেখানে 0 খালি কক্ষ এবং 1 ব্লক যা একটি আকৃতি তৈরি করে। আকৃতিতে কোনো গহ্বর নেই। আমাদের আকৃতির পরিসীমা খুঁজে বের করতে হবে।
উদাহরণ ম্যাট্রিক্স হলে আউটপুট 14।
সমাধানের ধাপসমূহ
- d := 0, perimeter := 0
- height := সারির সংখ্যা, length := কলামের সংখ্যা
- প্রতিটি সারি (line) এবং সেটির প্রতিটি মান (val) için:
- যদি val == 1 হয়, surround := 4
- চারদিকে (ডান, বাম, নিচ, উপরে) সন্নিহিত 1 থাকলে surround ১ করে কমান।
- perimeter += surround
- perimeter ফেরত দিন।
উদাহরণ কোড
class Solution:
def solve(self, matrix):
d = 0
perimeter = 0
height = len(matrix)
length = len(matrix[0])
for line in matrix:
c = 0
for val in line:
if val == 1:
surround = 4
if c != length - 1:
if matrix[d][c + 1] == 1:
surround -= 1
if c != 0:
if matrix[d][c - 1] == 1:
surround -= 1
if d != height - 1:
if matrix[d + 1][c] == 1:
surround -= 1
if d != 0:
if matrix[d - 1][c] == 1:
surround -= 1
perimeter += surround
c += 1
d += 1
return perimeter
ob = Solution()
matrix = [
[0,0,0,0,0],
[0,0,1,1,1],
[0,0,1,1,0],
[0,1,1,1,0],
[0,0,0,0,0]
]
print(ob.solve(matrix))
ইনপুট
matrix = [ [0,0,0,0,0], [0,0,1,1,1], [0,0,1,1,0], [0,1,1,1,0], [0,0,0,0,0] ]
আউটপুট
14