def getStartingBoard(): # Return a board data structure with tiles in the solved state. # For example, if BOARDWIDTH and BOARDHEIGHT are both 3, this function # returns [[1, 4, 7], [2, 5, 8], [3, 6, BLANK]] counter = 1 board =  for x in range(BOARDWIDTH): column =  for y in range(BOARDHEIGHT): column.append(counter) counter += BOARDWIDTH board.append(column) counter -= BOARDWIDTH * (BOARDHEIGHT - 1) + BOARDWIDTH - 1 board[BOARDWIDTH-1][BOARDHEIGHT-1] = BLANK return board
getStartingBoard() data structure will create and return a data structure that represents a "solved" board, where all the numbered tiles are in order and the blank tile is in the lower right corner. This is done with nested
for loops, just like the board data structure in the Memory Puzzle game was made.
However, notice that the first column isn’t going to be
[1, 2, 3] but instead
[1, 4, 7]. This is because the numbers on the tiles increase by 1 going across the row, not down the column. Going down the column, the numbers increase by the size of the board’s width (which is stored in the
BOARDWIDTH constant). We will use the
counter variable to keep track of the number that should go on the next tile. When the numbering of the tiles in the column is finished, then we need to set
counter to the number at the start of the next column.