AlgoDesign

3d surface area

1def surfaceArea(A):
2  # Write your code here
3  bottomTop, front, back, l, r, adj = 0, 0, 0, 0, 0, 0
4  
5  for i in range(len(A)):
6    for j in range(len(A[0])):
7      if A[i][j] > 0: bottomTop += 2
8      if i == 0: front += A[i][j]
9      if i == len(A) - 1: back += A[i][j]
10      
11      # add differences of boxes higher than adjacent box heights
12      if i > 0 and A[i - 1][j] > A[i][j]: adj += A[i - 1][j] - A[i][j]
13      if i < len(A) - 1 and A[i + 1][j] > A[i][j]: adj += A[i + 1][j] - A[i][j]
14      if j > 0 and A[i][j - 1] > A[i][j]: adj += A[i][j - 1] - A[i][j]
15      if j < len(A[0]) - 1 and A[i][j + 1] > A[i][j]: adj += A[i][j + 1] - A[i][j]
16    l += A[i][0]
17    r += A[i][len(A[0]) - 1]
18  
19  return bottomTop + front + back + l + r + adj