On Feb 12, 1:27 am, "agent-s" <[EMAIL PROTECTED]> wrote: > Basically I'm programming a board game and I have to use a list of > lists to represent the board (a list of 8 lists with 8 elements each). > I have to search the adjacent cells for existing pieces and I was > wondering how I would go about doing this efficiently. Thanks
def iter_grid(cols): i=0 while True: yield divmod(i,cols) i += 1 def iter_adjacents(row, col): gen = iter_grid(3) for i in range(9): x, y = gen.next() if x == 1 and y ==1: continue else: yield row - x + 1, col - y + 1 def make_grid_dict(rows, cols): return dict( zip(iter_grid(cols), ['#'] * (rows*cols)) ) def make_adjacent_list(row, col, row_length, col_length): ret = [] for x, y in iter_adjacents(row, col): if x > -1 and y > -1 and x < row_length and y < col_length: ret.append((x,y)) return ret grid = make_grid_dict(8, 8) adjacents = dict(grid) for x,y in sorted(adjacents.keys()): adjacents[x,y] = make_adjacent_list(x, y, 8, 8) print '(%s, %s) - %s ' % (x, y, adjacents[x,y] (0, 0) - [(1, 1), (1, 0), (0, 1)] (0, 1) - [(1, 2), (1, 1), (1, 0), (0, 2), (0, 0)] (0, 2) - [(1, 3), (1, 2), (1, 1), (0, 3), (0, 1)] (0, 3) - [(1, 4), (1, 3), (1, 2), (0, 4), (0, 2)] (0, 4) - [(1, 5), (1, 4), (1, 3), (0, 5), (0, 3)] (0, 5) - [(1, 6), (1, 5), (1, 4), (0, 6), (0, 4)] (0, 6) - [(1, 7), (1, 6), (1, 5), (0, 7), (0, 5)] (0, 7) - [(1, 7), (1, 6), (0, 6)] (1, 0) - [(2, 1), (2, 0), (1, 1), (0, 1), (0, 0)] (1, 1) - [(2, 2), (2, 1), (2, 0), (1, 2), (1, 0), (0, 2), (0, 1), (0, 0)] (1, 2) - [(2, 3), (2, 2), (2, 1), (1, 3), (1, 1), (0, 3), (0, 2), (0, 1)] (1, 3) - [(2, 4), (2, 3), (2, 2), (1, 4), (1, 2), (0, 4), (0, 3), (0, 2)] (1, 4) - [(2, 5), (2, 4), (2, 3), (1, 5), (1, 3), (0, 5), (0, 4), (0, 3)] (1, 5) - [(2, 6), (2, 5), (2, 4), (1, 6), (1, 4), (0, 6), (0, 5), (0, 4)] (1, 6) - [(2, 7), (2, 6), (2, 5), (1, 7), (1, 5), (0, 7), (0, 6), (0, 5)] (1, 7) - [(2, 7), (2, 6), (1, 6), (0, 7), (0, 6)] (2, 0) - [(3, 1), (3, 0), (2, 1), (1, 1), (1, 0)] (2, 1) - [(3, 2), (3, 1), (3, 0), (2, 2), (2, 0), (1, 2), (1, 1), (1, 0)] (2, 2) - [(3, 3), (3, 2), (3, 1), (2, 3), (2, 1), (1, 3), (1, 2), (1, 1)] (2, 3) - [(3, 4), (3, 3), (3, 2), (2, 4), (2, 2), (1, 4), (1, 3), (1, 2)] (2, 4) - [(3, 5), (3, 4), (3, 3), (2, 5), (2, 3), (1, 5), (1, 4), (1, 3)] (2, 5) - [(3, 6), (3, 5), (3, 4), (2, 6), (2, 4), (1, 6), (1, 5), (1, 4)] (2, 6) - [(3, 7), (3, 6), (3, 5), (2, 7), (2, 5), (1, 7), (1, 6), (1, 5)] (2, 7) - [(3, 7), (3, 6), (2, 6), (1, 7), (1, 6)] (3, 0) - [(4, 1), (4, 0), (3, 1), (2, 1), (2, 0)] (3, 1) - [(4, 2), (4, 1), (4, 0), (3, 2), (3, 0), (2, 2), (2, 1), (2, 0)] (3, 2) - [(4, 3), (4, 2), (4, 1), (3, 3), (3, 1), (2, 3), (2, 2), (2, 1)] (3, 3) - [(4, 4), (4, 3), (4, 2), (3, 4), (3, 2), (2, 4), (2, 3), (2, 2)] (3, 4) - [(4, 5), (4, 4), (4, 3), (3, 5), (3, 3), (2, 5), (2, 4), (2, 3)] (3, 5) - [(4, 6), (4, 5), (4, 4), (3, 6), (3, 4), (2, 6), (2, 5), (2, 4)] (3, 6) - [(4, 7), (4, 6), (4, 5), (3, 7), (3, 5), (2, 7), (2, 6), (2, 5)] (3, 7) - [(4, 7), (4, 6), (3, 6), (2, 7), (2, 6)] (4, 0) - [(5, 1), (5, 0), (4, 1), (3, 1), (3, 0)] (4, 1) - [(5, 2), (5, 1), (5, 0), (4, 2), (4, 0), (3, 2), (3, 1), (3, 0)] (4, 2) - [(5, 3), (5, 2), (5, 1), (4, 3), (4, 1), (3, 3), (3, 2), (3, 1)] (4, 3) - [(5, 4), (5, 3), (5, 2), (4, 4), (4, 2), (3, 4), (3, 3), (3, 2)] (4, 4) - [(5, 5), (5, 4), (5, 3), (4, 5), (4, 3), (3, 5), (3, 4), (3, 3)] (4, 5) - [(5, 6), (5, 5), (5, 4), (4, 6), (4, 4), (3, 6), (3, 5), (3, 4)] (4, 6) - [(5, 7), (5, 6), (5, 5), (4, 7), (4, 5), (3, 7), (3, 6), (3, 5)] (4, 7) - [(5, 7), (5, 6), (4, 6), (3, 7), (3, 6)] (5, 0) - [(6, 1), (6, 0), (5, 1), (4, 1), (4, 0)] (5, 1) - [(6, 2), (6, 1), (6, 0), (5, 2), (5, 0), (4, 2), (4, 1), (4, 0)] (5, 2) - [(6, 3), (6, 2), (6, 1), (5, 3), (5, 1), (4, 3), (4, 2), (4, 1)] (5, 3) - [(6, 4), (6, 3), (6, 2), (5, 4), (5, 2), (4, 4), (4, 3), (4, 2)] (5, 4) - [(6, 5), (6, 4), (6, 3), (5, 5), (5, 3), (4, 5), (4, 4), (4, 3)] (5, 5) - [(6, 6), (6, 5), (6, 4), (5, 6), (5, 4), (4, 6), (4, 5), (4, 4)] (5, 6) - [(6, 7), (6, 6), (6, 5), (5, 7), (5, 5), (4, 7), (4, 6), (4, 5)] (5, 7) - [(6, 7), (6, 6), (5, 6), (4, 7), (4, 6)] (6, 0) - [(7, 1), (7, 0), (6, 1), (5, 1), (5, 0)] (6, 1) - [(7, 2), (7, 1), (7, 0), (6, 2), (6, 0), (5, 2), (5, 1), (5, 0)] (6, 2) - [(7, 3), (7, 2), (7, 1), (6, 3), (6, 1), (5, 3), (5, 2), (5, 1)] (6, 3) - [(7, 4), (7, 3), (7, 2), (6, 4), (6, 2), (5, 4), (5, 3), (5, 2)] (6, 4) - [(7, 5), (7, 4), (7, 3), (6, 5), (6, 3), (5, 5), (5, 4), (5, 3)] (6, 5) - [(7, 6), (7, 5), (7, 4), (6, 6), (6, 4), (5, 6), (5, 5), (5, 4)] (6, 6) - [(7, 7), (7, 6), (7, 5), (6, 7), (6, 5), (5, 7), (5, 6), (5, 5)] (6, 7) - [(7, 7), (7, 6), (6, 6), (5, 7), (5, 6)] (7, 0) - [(7, 1), (6, 1), (6, 0)] (7, 1) - [(7, 2), (7, 0), (6, 2), (6, 1), (6, 0)] (7, 2) - [(7, 3), (7, 1), (6, 3), (6, 2), (6, 1)] (7, 3) - [(7, 4), (7, 2), (6, 4), (6, 3), (6, 2)] (7, 4) - [(7, 5), (7, 3), (6, 5), (6, 4), (6, 3)] (7, 5) - [(7, 6), (7, 4), (6, 6), (6, 5), (6, 4)] (7, 6) - [(7, 7), (7, 5), (6, 7), (6, 6), (6, 5)] (7, 7) - [(7, 6), (6, 7), (6, 6)] -- http://mail.python.org/mailman/listinfo/python-list