Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def head(arr):
- return arr[0] if len(arr) > 0 else None
- def last(arr):
- return arr[len(arr) - 1] if len(arr) > 0 else None
- def init(arr):
- return arr[:-1]
- def tail(arr):
- return arr[1:]
- def take(n, arr):
- return arr[:n]
- def drop(n, arr):
- return arr[n:]
- def reverse(arr):
- return list(reversed(arr))
- ############
- def byDefault(default, value):
- return default if value is None else value
- def fromIndex(i, arr):
- try:
- return arr[i]
- except:
- return None
- ############
- def spiral(matrix):
- if not matrix:
- return []
- left_column = []
- right_column = []
- new_matrix = []
- for row in init(tail(matrix)): # mid rows
- left_column.append(head(row))
- right_column.append(last(row))
- new_matrix.append(init(tail(row)))
- return byDefault([], head(matrix)) + \
- reverse(right_column) + \
- reverse(byDefault([], last(tail(matrix)))) + \
- left_column + \
- spiral(new_matrix)
- def operands(arr):
- if not arr:
- return 0
- if len(arr) == 1:
- return head(arr)
- [a, b] = take(2, arr)
- adds = a + b
- subs = adds - byDefault(0, fromIndex(2, arr))
- mult = subs * byDefault(1, fromIndex(3, arr))
- return operands([mult] + drop(4, arr))
- ############
- matrix = [
- [5,4,7],
- [1,2,3],
- [3,2,1],
- ]
- print(operands(spiral(matrix)) == 14)
Add Comment
Please, Sign In to add comment