Update README.md

"""The getNeighborLabels function takes as arguments, or already knows the value of, the boardWidth and a current tile called me. You can imagine the user has entered these values, and they are stored in variables called boardWidth and me; you do not need to ask the user to enter these values. In general the tiles of a board are always numbered, starting at zero. For example, on a board with a width of 4 and a height of 3, the tiles would be labeled as: 0 1 2 3 4 5 6 7 8 9 10 11

For this function, you will simply be performing the following calculations and storing each value in a string: me – boardWidth – 1 me – boardWidth me – boardWidth + 1 me – 1 me me + 1 me + boardWidth – 1 me + boardWidth me + boardWidth+ 1

Your function should find all the neighbors of the tile me, and return them as a string with the tiles in sorted order (if you write your algorithm "the easy way," it will be natural for the tiles to be in sorted order). For example, a call to the function with getNeighborLabels(5,0) (here 5 is the boardWidth and 0 is the me argument) would return the string of neighbors "[1, 4, 5, 6]". Each list will start and end with a bracket, and each element of the list will be separated from a previous element by a comma and then a space.

If the board provided is invalid, (i.e. its width is not a natural number), your function should return a string of "invalid board!". You may assume that the me tile will always be an integer, however your method should never return any negative neighbors, as these will be impossible to fit on any board. Note that we don't know if the me tile provided is ever too large, because we do not have the height of the board in this function. You can always assume that the board that would be calling this function provides a valid me tile for this project, and that all arguments are integers. If one of the neighbors has the same value as the me, you should include that in the result. Your result should also NOT have any duplicates - you need to check that you didn't already add a tile like that to the string, before adding it. Although your function above will work in cases where the me tile is in the middle of the board, it will calculate incorrect values if the tile is along an edge. Therefore, we are going to write another function to verify the labels returned by the function above.

The second function you will write for this project is called verifyNeighbor. This function takes as arguments a boardWidth, boardHeight, neighbor, and a me tile (you can assume a user already entered these values, and you have access them as stored variables under these names). It will return either the string "True" or "False". For this function, imagine that the tile me is tile 3. Then all of its neighbors would be 2, 6, and 7. A neighbor is any tile on the board that touches (even in a single point) the tile me. A tile has at most eight neighbors. For example, a call to the function with verifyNeighbor(4,3,4,3) would return "False", because although 4 was a neighbor that could have been returned from the getNeighborLabels function, it is NOT a valid neighbor of 3 on this board."""

"""The blankBoard function takes as arguments, or already knows the value of, a character, boardWidth and a boardHeight. It creates a board of the specified size, as a two dimensional list, and fills it with the character specified. For example, if you called the function as blankBoard('X',3,2), your function would return [['X', 'X', 'X'], ['X', 'X', 'X']]. If you called it with blankBoard('1',1,2), it would return [['1'], ['1']]. The populateBoard function takes as arguments, or already knows the value of, a mineList, boardWidth and a boardHeight. It creates a board of the specified size, as a two dimensional list, and fills it with the proper values.

The board will be a two dimensional list that will contain an X character in every position specified by the incoming mineList. All other tiles in the board will be set to the character 0, unless they neighbor a tile with a mine in it. If they do, you will increment the 0 by the number of neighboring mines to that tile, and store that value. For example, if you called the function as populateBoard([1,5],3,4), your function would return [['1', 'X', '2'], ['1', '2', 'X'], ['0', '1', '1'], ['0', '0', '0']].

Note that you will have to design your own algorithm for this function - as in many software specifications, we are only supplying you with the input and output specifications - the rest is up to you. As a hint, you should use all of the functions you wrote so far (blankBoard, getNeighborLabels, verifyNeighbor); use the eval( ) function to convert the strings these functions returned into lists or boolean values as needed. Therefore, you must move your project2.py file into the same directory as the current project, if it is not there already. The template has taken care of pointing your new code to the project2.py file."""