*(This is a post for CS320 Boston University)*

**Minimax** is a decision rule used in game theory for minimizing the possible loss for a worst case (maximum loss) scenario [wiki]. Alternatively, it can be thought of as maximizing the minimum gain. It is usually seen in a two player zero-sum game like tic-tac-toe.

The exercise today involves a partial implementation of an AI tic-tac-toe player using minimax algorithm. Consult [wiki] for the pesudo-code of this algorithm.

The sample code consists of the definitions for **board**, **cell**, **move**, **position** and decition tree **dtree**. You are required to implement

`show_board`

: print the board on the screen`make_move`

: place a cell on a position of the board`next_moves`

: generate all possible next moves`minimax_min`

and`minimax_max`

: compute the decision tree with minimax algorithm.