5.32 · exercise
Tic-tac-toe judge
The starter reads a tic-tac-toe board into board as one line of nine characters, row by row: X, O, or . for an empty cell. The input XOX.OX.O. is this board:
X O X
. O X
. O .
Print X wins or O wins when a row, a column, or a diagonal holds three of the same mark. When no line is complete, print keep playing if any cell is still empty, or draw if the board is full.
The board is a two-dimensional array stored one row after another (row-major order), one byte per cell, so the cell in row r, column c is the byte at board + r * 3 + c. The boards come from real games, so at most one player has a complete line.
What is checked
- one line with the verdict
- the program exits cleanly
- cells are read from memory one byte at a time (
ldrbpresent) - your program also runs on boards you do not see: wins along a row, a column and each diagonal, a full board with a winner, a full board without one, and an empty board
specification
stdinXOX.OX.O.
stdoutprints the right output
exitexits with the right code
sourceuses
ldrbhiddenright output and exit code on 8 more inputs you do not see
We run your program on the input above and on the hidden ones, and compare what it does. Nothing is matched against a stored solution.