二人で遊ぶ「立体四目並べ」というゲームがあります(写真)。これは、五目並べのように二人が互いに白と黒の駒を1つずつ置いていって、タテヨコ斜めのいずれかの列に4つ先に並べれば勝ち、というものです。ただし駒は写真のように柱に通して積み上げてゆくので、すでに置かれた駒の上に載せることはできても、いきなり空中に駒を「置く」ことはできません。
![]()
さて、このゲームには「引き分け」はあるでしょうか? つまり、双方が最善を尽くすと、全部の駒を置き終わっても、どちらの色の駒も4個一列に並んでいないということは起こるでしょうか?
実際にこのゲームをやってみるとわかるのですが、慣れてくるとこの「引き分け」が起こるようになってきます。(もっと熟練すると先手必勝なのか、それともこのゲームは双方が最善を尽くすと引き分けになるゲームなのかはわかりません。)
では、実際にこのゲームで引き分けになる駒の配置のパターンにはどんなものがあるでしょうか。Javaアプレットを作って試せるようにしてみました。
使い方を簡単に説明しておきます。アプレットが起動されると、白くて串のない「おだんご」のようなものが4×4=16本描かれます。これが立体四目並べの駒を表します。マウスで1つ1つの駒(おだんご)をクリックしていただくと、その駒の色がクリックするたびに白→赤、赤→白と交互に変わります。
アプレットの一番下には[Reset]というボタンと、なにやら表示が出ています。[Reset]ボタンを押すと、全ての駒の色を白に戻します。 隣の表示ですが、最初は
White(64):76 Red(0):0 となっていると思います。この4つの数字の意味は、白が64個、白が4つ揃っている列が76本、赤が0個、赤が4つ揃っている列が0本あるということを示しています。ここで、例えば一番すみっこの駒の色を赤にしてみましょう。するとこの表示は
White(63):69 Red(1):0 と変わります。1箇所が赤になったことで、白の駒の数は1つ減って63、白のラインは7本減って(どの7本かわかりますか?)69本、赤の駒の数が1つ増えて1、赤のラインはまだありませんから0のまま、です。
さて、このアプレットを使って、以下の2つのパズルをやってみてください。
1. 赤と白のラインをどちらも0にしてください。
2. 赤と白のラインがどちらも0のとき、駒の数の差をできるだけ大きくしてください。
2番目の問題は、初期状態(全部が白)からラインを0にするための最小手数は? と言い換えてもよいかと思います。