この演習では、三目並べの状態を判定するプログラムを実装します。 (このゲームは「noughts and crosses」や「Xs and Os」という名前で知られているかもしれません。)
このゲームは3×3のマス目で行います。
プレイヤーは交代で、マス目にXとOを置いていきます。
ゲームは、どちらかのプレイヤーが縦・横・斜めのいずれかにマークを3つ並べて勝つか、すべてのマスが埋まったときに終わります。
この演習では、Xから始まるものと仮定します。
与えられたゲームがどの状態にあるのかを判定するのが課題です。
考えられるゲームの状態は次の3つです。
与えられた盤面が不正な場合は、適切なエラーを投げます。
盤面が次のいずれかの条件に当てはまる場合、その盤面は不正です。
Xから始まることを思い出しましょう)。 | |
X | |
___|___|___
| |
| X | O
___|___|___
| |
O | X |
| |
| |
X | O | X
___|___|___
| |
X | X | O
___|___|___
| |
O | X | O
| |
| |
X | X | X
___|___|___
| |
| O | O
___|___|___
| |
| |
| |
| |
O | O | X
___|___|___
| |
| |
___|___|___
| |
| |
| |
| |
X | X | X
___|___|___
| |
O | O | O
___|___|___
| |
| |
| |
盤面は、ヌル終端された文字列として表され、各行の末尾には改行文字が入ります。
例を挙げると、"X \n XO\nOX \n"のようになります。
| レジスタ | 用途 | 型 | 説明 |
|---|---|---|---|
$a0 |
入力 | アドレス | ヌル終端された入力文字列 |
$v0 |
出力 | 整数 | ゲームの状態(1=ongoing、2=draw、3=win、-1=error) |
$t0-9 |
一時的 | 任意 | 一時的な保存用 |
Exercismに登録すれば、70個の演習、そして本物の人間によるメンタリングとともに、MIPS Assemblyを学んでマスターできます。すべて無料です。