কম্পিউটার টিউটোরিয়াল

পাইথনে ৩D শেপের সারফেস এরিয়া

মান লেই একটি N x N গ্রিড আছে, সেখানে আমরা কিছু 1 x 1 x 1 কিউব রাখি। এখন প্রতিটি ভ্যালু v = grid[i][j] রিপ্রেজেন্ট করে grid cell (i, j)-র ওপর রাখা v টি কিউবের টাওয়ার। আমাদের ফলাফল শেপের টোটাল সারফেস এরিয়া বের করতে হবে।

সেজন্য, যদি ইনপুট হয় [[1,2],[3,4]], তবে আউটপুট হবে ৩৪।

এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব −

  • adjacentArea() ফাংশন ডিফাইন করুন। এটি row নিবে
  • area := 0
  • i = 0 থেকে row-এর সাইজ - 1 পর্যন্ত লুপ
    • যদি row[i] এবং row[i + 1] নন-জিরো হয়, তবে
      • area := area + 2 * min(row[i], row[i+1])
  • area রিটার্ন
  • মেইন মেথড থেকে নিচের কাজগুলো করুন −
  • z := 2 * (sum of (sum of i > 0 for i in row) for all row in grid)
  • x_plus_y := grid-এ সব এলিমেন্টের সমষ্টি * 4
  • x_adjacent := sum of adjacentArea(row) for all row in grid
  • y_adjacent := sum of adjacentArea(row) for all column in the grid
  • z + (x_plus_y - x_adjacent - y_adjacent) রিটার্ন

বেস্টার বোঝার জন্য নিচের ইম্প্লিমেন্টেশন দেখুন −

উদাহরণ

class Solution:
    def surfaceArea(self, grid):
        def adjacentArea(row):
            area = 0
            for i in range(len(row) - 1):
                if row[i] and row[i + 1]:
                    area += 2 * min(row[i], row[i+1])
            return area
        z = sum([sum(i > 0 for i in row) for row in grid]) * 2
        x_plus_y = sum([sum(row) for row in grid]) * 4
        x_adjacent = sum([adjacentArea(row) for row in grid])
        y_adjacent = sum([adjacentArea(row) for row in zip(*grid)])
        return z + (x_plus_y - x_adjacent - y_adjacent)

ob = Solution()
print(ob.surfaceArea([[1,2],[3,4]]))

ইনপুট

[[1,2],[3,4]]

আউটপুট

34
  1. পাইথন PyGame: উইন্ডোতে বিভিন্ন আকার (Shapes) আঁকুন

  2. পাইথনে ৩D শেপের প্রজেকশন এরিয়া

  3. পাইথনে সর্বোচ্চ ত্রিভুজের এলিয়া (Largest Triangle Area) নির্ণয়

  4. পাইথন প্রোগ্রাম: টেট্রাহেড্রনের ক্ষেত্রফল বের করা