searching a list of lists as a two-dimensional array?
James Stroud
jstroud at mbi.ucla.edu
Mon Feb 12 01:53:01 EST 2007
Paul Rubin wrote:
> "agent-s" <shanekwon at gmail.com> 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
More information about the Python-list
mailing list