Advertisement
Guest User

Untitled

a guest
Sep 16th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. from itertools import chain
  2.  
  3. def diagonal_traverse(arr):
  4. res = []
  5. for i in range(0, len(arr)):
  6. tmp = []
  7. j = 0
  8. z = i
  9. while z >= 0 and j < len(arr[0]):
  10. tmp.append(arr[z][j])
  11. z -= 1
  12. j += 1
  13. res.append(tmp)
  14.  
  15. for j in range(1, len(arr[0])):
  16. tmp = []
  17. z = len(arr) - 1
  18. i = j
  19. while z >= 0 and i < len(arr[0]):
  20. tmp.append(arr[z][i])
  21. z -= 1
  22. i += 1
  23. res.append(tmp)
  24.  
  25. diagonal_res = []
  26. for i, a in enumerate(res):
  27. if i % 2 != 0:
  28. diagonal_res.append(a[::-1])
  29. else:
  30. diagonal_res.append(a)
  31. return list(chain(*diagonal_res))
  32.  
  33.  
  34. if __name__ == "__main__":
  35. arr = [
  36. [1, 2, 3, 4, 5],
  37. [6, 7, 8, 9, 10],
  38. [11, 12, 13, 14, 15],
  39. [16, 17, 18, 19, 20],
  40. ]
  41. r = diagonal_traverse(arr)
  42. arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  43.  
  44. r = diagonal_traverse(arr)
  45. print(r)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement