[Tutor] Making Doubly Linked List with Less Lines of Code.
Danny Yoo
dyoo at hashcollision.org
Tue Dec 30 20:37:13 CET 2014
>> What are the _operations_ you want to support? Can you say more about
>> this?
>
> I need to support lookups, no insertions or deletions are required. This
> code will be used to quickly lookup nodes, and check for specific patterns
> by checking the nodes values in either a row or column.
As it stands, I believe you want these operations:
* Construct a game grid with a certain number of rows and columns
* Find a tile within the grid, given its row and column.
* Given a tile in the grid, find the neighboring tiles around it.
If that's the case, then none of this requires linked list storage.
Instead, we can represent this as a list of rows. Each row element
would be itself a list of tiles. In short, a matrix. See:
https://docs.python.org/2/faq/programming.html#how-do-i-create-a-multidimensional-list
Its construction wouldn't be too bad. Something like:
self.rows = [[None] * self.num_of_cols for i in range(self.num_of_rows)]
Finding a tile (i, j) in such a structure would be direct list indexing.
self.rows[i][j]
And finding neighboring tiles also wouldn't be too bad: Given a tile
at (i, j), we can find its neighbors through arithmetic (i plus or
minus one, j plus or minus one).
If the game grid were a lot more dynamic and non-squarish, then that
might make it appropriate. Linked lists give us a flexible way to
represent such a game board. But at the moment, I think it's overkill
for the scenario you're showing us.
Good luck!
More information about the Tutor
mailing list