#Grid class for grids with values in cell at index=2 or (value=False) appended to cell #http://www.codeskulptor.org/#user43_gRaH4jSVYPihsJ5_0.py #by Adam Barnes #global directions for traversing DOWN = (1,0) UP = (1,0) RIGHT = (0,1) LEFT = (0,-1) class grid: """ Grid class of width, height. May contain values or not. """ def __init__(self, width, height, value = True, init_val = 0): self._width = width self._height = height self._value = value if not self._value: self._grid = [[[h,w] for w in range(width)] for h in range(height) ] else: self._grid = [[[h,w,init_val] for w in range(width)] for h in range(height) ] def __str__(self): for i in range(self._height): print self._grid[i] return "Grid is " + str(self._width) + " by " + str(self._height) def traverse_grid(self, start_row, start_col, direction, num_steps, add_value, debug = False): for step in range(num_steps): row = start_row + step * direction[0] col = start_col + step* direction[1] if debug: print "Processing Cell ", (row, col) if self._value: self._grid[row][col][-1] += add_value else: self._grid[row][col].append(add_value) if debug: print "with value ", self._grid[row][col] my_grid = grid(4,4) print my_grid my_grid.traverse_grid(0,3,DOWN, 4,2, True) print my_grid my_grid.traverse_grid(0,0,RIGHT,4,3) print my_grid print print "---------------------" print my_grid = grid(4,4,False) print my_grid my_grid.traverse_grid(0,3,DOWN, 4,2, True) print my_grid my_grid.traverse_grid(0,0,RIGHT,4,3) print my_grid
Comments