# The Game of Nim - Step 1

◀ Exercise #2: The Game of Nim▶ The Game of Nim - Step 2
Amazon Let’s apply the 1st step of the Four-Step Programming Model to solve the game of Nim!

Four Step Programming Model: Step 1
The program flow should be straightforward. The catch lies in how the computer in smart mode makes its move. We need a function to determine whether the current number of marbles is one less than a power of 2. We also need a function to calculate the number of marbles the smart computer should draw.

The following is my skeleton:
```bool deadNum(int);

int main() {
- initialize random number generator
- introduce the game of Nim and display its rules
- determine who goes first and the initial number of marbles
- deal with the case when computer plays stupid
if it’s user’s turn, prompt user to enter a number
if the number is invalid, prompt user to enter another one
if it’s computer’s turn, draw a random legal number of marbles
- deal with the case when computer plays smart
if it’s user’s turn, prompt user to enter a number
if it’s computer’s turn, draw a number of marbles based on the strategy
- switch turn
}

/*
precondition: n must be a positive integer
postcondition: return true if n is 1 less than any power of 2; return false otherwise
*/
- return true if n is a power of 2 minus 1
}

/*
precondition: n must be a positive integer
postcondition: return the number of marbles smart computer should draw