Advertisement
Guest User

print 2d arrray diagonally

a guest
Oct 4th, 2015
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.92 KB | None | 0 0
  1. def diag_print(data):
  2.     '''
  3.    prints a 2d array diagonally
  4.    data is a list of list (aka 2d array)
  5.    '''
  6.     m = len(data)
  7.     n = len(data[0])
  8.     visited = {}
  9.     queue = [(0,0)]
  10.     curr_level = 0
  11.     going_front=True
  12.     while(len(queue) > 0):
  13.         u = queue.pop(0)
  14.         print data[u[0]][u[1]],
  15.         #print a new line when a level is finished traversing
  16.         if going_front and u[1]==curr_level:
  17.             print
  18.             curr_level += 1
  19.             if curr_level==n-1:
  20.                 going_front=False
  21.         if not going_front and u[1]==curr_level:
  22.             print
  23.         #enqueue the childs of each node
  24.         if u[0]+1 < m and (u[0]+1,u[1]) not in visited:
  25.             queue.append((u[0]+1,u[1]))
  26.             visited[(u[0]+1,u[1])] = True
  27.         if u[1]+1 < n and (u[0],u[1]+1) not in visited:
  28.             queue.append((u[0],u[1]+1))
  29.             visited[(u[0],u[1]+1)] = True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement