フリーセルは1990年代Win32sの付属ゲームとして登場して配布されていましたが、Windows95の付録として、さらに多くの人に知られることになりました。ほとんど成功してしまうのでゲームとしては、飽きていましたが、最近、これをコンピュータに解かせる考察を発見。なにげなくやっていたワザや状態に名前が付けられていて、コンピュータに解かせるためのアルゴリズムがていねいに解説されています。これを紹介しながら、わたしも理解を深めようと思います。
※このページは知的ゲーム「フリーセル」に関する考察(1998年3月9日 久米三喜男、1997年度 福岡大学 大学院理学研究科 応用数学専攻 博士課程前期 修了論文)を参考にしています。
エリア | free cell | ゲームボードの左上に位置するカード置き場。任意のカードを1枚置くことができます。 free cellは4つあり、それぞれ左からA, B, C, Dと名前を付けます。 |
home cell | ゲームボードの右上に位置するカード置き場。カードを順番に積み重ねることができます。 home cellは4つあります。 |
|
line | free cell, home cellの下側に位置するカード置き場。 lineは8つあり、それぞれline1, line2, line3,,,line8と名前をつけます。 ゲームスタート時点ではline1~4には7枚、line5~8には6枚のカードが配置されています。 (Unix版は、line1,3,5,7に7枚、line2,4,6,8に6枚) |
フリーセルはカードを移動していくことで進行していくゲームです。8つのlineにランダムに並べられたカードを制約された移動条件を守りながら、free
cellをうまく使いながら、すべてのカードをhome cellに順序良く積み上げたら勝利。
移動不能に陥ったり(完全敗北)、同じ移動を繰り返すだけで勝利の可能性がなくなったら(千日手)、敗北となります。
◆カードの移動に関する制限
カードの移動は1枚だけ行い、これを連続して行うことによってゲームが進行する。 | |
free cellからの移動 | 無制限。 |
free cellへの移動 | free cellにカードがなければ移動可能。 |
home cellからの移動 | 不可。 |
home cellへの移動 | home cellにカードがなければ、番号1(エース)のみ移動可能。 home cellにカードがある時は、そのカードと同じスート(種類)で、かつ番号が1だけ大きいカードのみ移動可能。 この制限によって、結果的に、4箇所のhome cellにはそれぞれ同じスートのカードが番号1(エース)から番号13(キング)まで順序良く積み上げられることになります。 |
lineからの移動 | topcardのみ移動可能。 |
lineへの移動 | lineにカードがなければ移動可能。 lineにカードがある時は、topcardと異なる色で、かつ番号が1だけ小さいカードのみ移動可能。 移動されてきたカードは、そのlineの新しいtopcardになります。 |
フリーセルのルールにあるように、カードの移動は1枚だけです。これが第1手目。そして、ゲームは第2手目、第3手目…へと進みます。
コンピュータプログラムならば、このようにして1手1手丁寧に(虱潰しに)ゲーム木を探索していくことになります。
しかし、人間が実際にフリーセルに取り組む場合、プログラムとは違った発想でゲームの先読みを行っていると考えます。
(※この考えが「論文:知的ゲームフリーセルに関する考察」に登場する重要なところです。)
例えば「line3のシークエンスをline6へ移動できないか?」とか「line3の奥にあるカードをhome cellへ移動したい」とか考えます。
つまり、1手1手考えるのではなく、複数の手がまとまった、もっと大きな単位で手を考えていると思われるのです。
この「複数の手を束ねた大きな単位」を群手(group hend)と呼ぶことにします。
指し手を束ねた群手は、ただ束ねたのではなくそれぞれ目的を持って作ります。以下にフリーセルをプレイする上でよく使われる群手をまとめます。
名称 | 記号 | 目的 | 例 | |
ムーブシークエンス move sequence |
MovS | シークエンス(またはその一部)を移動する | line5からline1に移動 | MovS51 |
ディックライン dig line |
DL | あるlineにある全て(あるいはその一部)を移動する (あるlineを掘り抜くと表現する) |
line4を掘り抜く | DL4 |
あるlineの特定のカードを移動する (あるlineの特定のカードを掘り出すと表現する) |
line4の奥から6番目のカードを掘り出す | DL(4,6) | ||
ビルドタワー build tower |
BT | タワーを作る(タワーを建てると表現する) | line8にタワーを建てる | BT8 |
ビルドサブタワー build subtower |
BS | サブタワーを作る(サブタワーを建てると表現する) | line8にサブタワーを建てる | BS8 |
メークシークエンス make sequence |
MakS | タワー、サブタワー、空きline以外のlineに対し、その手前にシークエンスを作る | line3の手前にシークエンスを作る | MakS3 |
トゥーホーム to home |
TH | 目的のカードをホームセルに移動する | line7の奥から5番目のカードをホームセルに移動 | TH(7,5) |