このゲームについて
三目並べ(まるばつゲーム)は、3x3のマスに交互に印を置き、縦・横・斜めのどこか1列を自分の印3つで先に揃えた方が勝ちになるゲームです。このページではあなたがX、コンピュータがOを担当します。盤面が小さいため、すべての展開が計算し尽くされており、「ゲームを作るプログラムはどう先を読むのか」を知る入門教材としても向いています。休憩中の一戦にも、お子さんに「一手先を読む」考え方を伝える場面にも使えます。
遊び方
- あなたはX、コンピュータはOです。初期設定ではあなたが先手で、「先手」の選択でコンピュータ先手にも切り替えられます(切り替えると新しい対局が始まります)。
- 勝ちとなる列は全部で8本(横3、縦3、斜め2)です。どれか1本を同じ印3つで揃えれば、その時点で勝利です。
- 9マスすべてが埋まっても誰も揃えられなければ引き分けです。
- マスはクリックやタップのほか、Tabキーで移動してEnterまたはSpaceでも置けます。コンピュータの思考中(約0.3秒)は入力を受け付けないので、ダブルタップで2回置いてしまうことはありません。途中で「新しいゲーム」を押すと、待機中のコンピュータの手も取り消されます。
- 戦績は開いているページの中だけに保持され、更新やタブを閉じると消えます。サーバーへの送信や端末間の同期はありません。
難易度の仕組み
- やさしい: 空いているマスから完全にランダムで選びます。乱数にはブラウザのMath.randomを使っており、遊び用であってセキュリティ用途ではありません。
- ふつう: 毎手、コイン投げのように半々の確率で「最善手」か「ランダムな手」を選びます。
- むずかしい: ミニマックス法で最後まで全展開を調べます。勝ちは「10 − 盤上の印の数」、負けは「印の数 − 10」と評価するため、勝てるなら最短で、負けが避けられないなら最も遅く負ける手を選びます。同点の手が複数あればランダムに選ぶので、同じ局面でも対局ごとに応手が変わることがあります。
全部で何通り?(ページのビルド時に数え上げた値)
9マスを交互に埋める順番は 9! = 362,880 通りに見えますが、1列揃った時点で対局が終わるため、実際に起こりうる展開はそれより少なくなります。Xを先手として規則どおり全展開を数えると、最後まで進む異なる対局は255,168通りで、内訳はXの勝ち131,184、Oの勝ち77,904、引き分け46,080です。この数はゲーム本体と同じ規則から自動で計算しており、手入力ではありません。先手の勝ちが多いのは、両者が適当にマスを選ぶ場合の話です。
| 終了時点 | 該当する対局数 |
|---|---|
| 5手目で終了 | 1,440 |
| 6手目で終了 | 5,328 |
| 7手目で終了 | 47,952 |
| 8手目で終了 | 72,576 |
| 9手目で終了 | 127,872 |
| 合計 | 255,168 |
最短でも5手目までは終わりません(Xが3つ揃えるのは全体の5手目だからです)。最も多いのは9手目まで続く127,872通りです。対局ではなく「盤面の種類」で数えると、空の盤面や終局後の盤面を含めて5,478種類で、回転・反転して重なるものを同一視すると765種類まで減ります。これだけ少ないため、コンピュータは全展開を調べても一瞬で答えられます。
ランダムに打つ相手との結果(正確な確率)
次の表は、X(先手)が空きマスを等確率でランダムに選ぶと仮定し、コンピュータの難易度ごとにすべての展開の確率を足し合わせた値です。「考えずに押した場合」の基準線であり、実際の人の勝率ではありません。「やさしい」は両者ともランダムの場合です。
| コンピュータの難易度 | X(あなた)の勝ち | 引き分け | O(コンピュータ)の勝ち |
|---|---|---|---|
| やさしい | 58.5% | 12.7% | 28.8% |
| ふつう | 28.0% | 18.5% | 53.5% |
| むずかしい | 0.0% | 22.3% | 77.7% |
「むずかしい」はランダムな相手には負けず、揃えられる場面を逃しません。同時に、あなたが最善を尽くしても勝つことはできないので、目標は「負けないこと」になります。
先手の最初の一手と後手の応じ方
両者が最善を尽くすと結果は引き分けです(空の盤面の評価値を計算すると引き分け(0))。マスの番号は左上から右へ1〜9とします。1つのマスが通る列の数は、角が3本、辺の中央が2本、中央が4本で、中央が最も多くの列に関わります。先手の最初の一手ごとに、後手が引き分けを守れる応手がいくつ残るかを全探索で数えると次のとおりです。
| 先手の初手 | 通る列の数 | 後手の選択肢 | 引き分けを守れる応手 |
|---|---|---|---|
| 角(例: 1番のマス) | 3本 | 8マス | 1マス |
| 辺の中央(例: 2番のマス) | 2本 | 8マス | 4マス |
| 中央(5番のマス) | 4本 | 8マス | 4マス |
先手が角から始めると、後手が無事でいられる応手は中央の1マスだけで、ほかの7通りは最善手で追われると負けます。そのため先手には「相手が間違える余地が最も大きい」角の初手が実戦的です。辺(たとえば2番)から始めた場合に引き分けを守れるのは1・3・5・8番、中央から始めた場合は四隅の4マスです。これは完璧な相手を想定した理論値であり、人間同士の勝率ではありません。
勝ちにつながる「フォーク」
1手で2本の列を同時に狙い、相手が片方しか防げない状態にすることを「フォーク」と呼びます。再現できる一例です。Xが1番(左上の角)に置き、Oが対角の9番に応じます。Xが3番に置くと1-2-3の脅威ができるので、Oは2番で防ぎます。次にXが7番に置くと、1-4-7と3-5-7の2本を同時に狙えます。Oが4番を塞いでもXが5番で斜めを完成させて勝ちです。原因はOの最初の応手で、角の初手に角で応じるとこの形を許し、中央で応じれば許しません。
負けないためのコツ
- 後手なら、相手の初手が角のときは必ず中央を取ります。相手の初手が中央なら、四隅のどれかで応じます。
- 毎手、次の順で確認します。(1)今すぐ自分が揃えられるか。(2)相手が2つ並べて残り1マスが空いていないか(あれば防ぐ)。(3)それ以外なら自分の作戦を考える。
- 相手のフォークを1手先で読みます。「相手がどのマスに置くと2本同時に狙えるか」を考え、そのマスを先に取るか、相手が防がざるを得ない脅威を作って流れを変えます。
- 先手・後手の両方で何局も試してください。「むずかしい」は同点の手を乱数で選ぶので、毎回違う展開になります。
よくある誤解と限界
- 三目並べは解かれたゲームで、完璧な相手に勝つ必勝法はありません。双方が最善なら引き分けが上限です。
- 「先手が有利」は相手がミスをしうる場合の話で、最善同士では先手も後手も引き分けです。
- このページの確率はランダムな相手という仮定で厳密に計算した値で、訪問者の統計ではありません。プレイ統計の収集もしていません。
- コンピュータが強いのは3x3という小さな盤面だからです。五目並べのように盤面が大きいゲームは、同じ方法でブラウザ内の全探索はできません。
よくある質問
「むずかしい」に勝てますか?
設計どおりに動く限り勝てません。双方が最善なら必ず引き分けで、「むずかしい」は最善手しか選ばないためです。この難易度の目標は引き分けです。勝ちを狙うなら「やさしい」か「ふつう」を選んでください。
先手は本当に有利ですか?
相手がミスしうる場合は有利です。ランダム同士ではXが約58.5%、Oが約28.8%で勝ちます。最善同士なら引き分けです。先手の利点は、特に角の初手で相手に誤る機会が多く生まれることです。
コンピュータ先手だと難しくなりますか?
少し難しくなります。最初から正しく応じる必要があるためです。コンピュータが角から始めたら中央を取ってください。「むずかしい」では空の盤面での初手の評価がどのマスも同じなので、初手はランダムに選ばれます。
全部で何通りの展開がありますか?
Xが先手で、1列揃ったら終了する規則では255,168通りの異なる対局、盤面の種類では5,478種類(回転・反転を同一視すると765種類)です。いずれもサイトのビルド時に自動で数えた値です。
「ふつう」はどう手を決めていますか?
毎手、最善手とランダムな手を半々の確率で選びます。同じ局面でも、強い応手の対局と弱い応手の対局が出るのはこのためです。