トラック
/
MIPS Assembly
MIPS Assembly
/
演習
/
三目並べの状態
三目並べの状態

三目並べの状態

中級

説明

この演習では、三目並べの状態を判定するプログラムを実装します。 (このゲームは「noughts and crosses」や「Xs and Os」という名前で知られているかもしれません。)

このゲームは3×3のマス目で行います。 プレイヤーは交代で、マス目にXとOを置いていきます。 ゲームは、どちらかのプレイヤーが縦・横・斜めのいずれかにマークを3つ並べて勝つか、すべてのマスが埋まったときに終わります。

この演習では、Xから始まるものと仮定します。

与えられたゲームがどの状態にあるのかを判定するのが課題です。

考えられるゲームの状態は次の3つです。

  • ゲームはまだongoingです。
  • ゲームはdrawで終わりました。
  • ゲームはwinで終わりました。

与えられた盤面が不正な場合は、適切なエラーを投げます。

盤面が次のいずれかの条件に当てはまる場合、その盤面は不正です。

  • 正しい順番で手を打っても、その盤面には到達できません(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 一時的 任意 一時的な保存用
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
MIPS Assembly Exercism

三目並べの状態を始める準備はできましたか?

Exercismに登録すれば、70個の演習、そして本物の人間によるメンタリングとともに、MIPS Assemblyを学んでマスターできます。すべて無料です。