Paul Rubin wrote: > "agent-s" <[EMAIL PROTECTED]> writes: > >>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 > > > You're getting a bunch of Pythonic suggestions which are easy to > understand though not so efficient. If you're after efficiency you > might look at a book like Welsh and Baczynskyj "Computer Chess II" for > some techniques (warning, this is a rather old book though) and > program in a closer-to-the-metal language. One common approach these > days is "bit boards". Basically you represent the board state as a > bunch of 64-bit words, one bit per square. So for checking occupancy, > you'd have a word having the bits set for occupied squares. If you > only want to check adjacent squares (king moves), you could have a > bunch of bit masks (one for each square) with bits set only for the > adjacent squares (similarly for bishop moves, rook moves, etc.) Then > to check adjacency you'd mask off the appropriate bits for that > square, then AND it against the occupancy word. Normally you'd have > separate occupancy words for your own pieces and your opponent's.
In defense of the less efficient suggestions, he did say he had to use a list of lists. But what you describe is pretty cool. James -- http://mail.python.org/mailman/listinfo/python-list