top>

フリーセル Free Cell

フリーセルは1990年代Win32sの付属ゲームとして登場して配布されていましたが、Windows95の付録として、さらに多くの人に知られることになりました。ほとんど成功してしまうのでゲームとしては、飽きていましたが、最近、これをコンピュータに解かせる考察を発見。なにげなくやっていたワザや状態に名前が付けられていて、コンピュータに解かせるためのアルゴリズムがていねいに解説されています。これを紹介しながら、わたしも理解を深めようと思います。
※このページは知的ゲーム「フリーセル」に関する考察(1998年3月9日 久米三喜男、1997年度 福岡大学 大学院理学研究科 応用数学専攻 博士課程前期 修了論文)を参考にしています。

フリーセルの画面

フリーセル

フリーセルの諸定義

フリーセル

◆フリーセルの画面には、free cell, home cell, lineの3つのエリアがあります。
エリア   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枚)

◆card
カードはスペード、クラブ、ハート、ダイヤの4種類、各13枚で、合計52枚を使用します。
カードは3桁で表現し、上1桁はスペード、クラブ、ハートダイヤをそれぞれ S, C, H, D、下2桁はカード番号01~13を表します。(※原文では、スートをS,C,H,Dではなく1,2,a,bで表している)

◆lineの手前、奥、空きline
上図のline奥のカードが一番下で、その上にカードが積み上げられて、line手前のカードが一番上になります。
なお、line手前のカード(一番上に積み上げられたカード)をtopcard(トップカード)と呼びます。
またカードのないlineを空きlineと呼びます。


◆sequence(シークエンス)、subtower(サブタワー)、tower(タワー)
上図のline8において、奥から3番目C12~一番手前D07までは、ある一定の規則に従って並んでいます。
すなわち、手前のカードになるにつれ
  ・カードの番号が1ずつ小さくなっている
  ・カードの赤黒が交互になっている
というものです。このカードの並びをシークエンスと呼びます。
line8 のシークエンスは6枚のカードで構成されていますので、この場合「line8 のシークエンスのサイズは 6である」と表現します。
シークエンスのうち、line2, line4, line7のように一番奥から一番手前まで並んでいるものを、サブタワーと呼びます、さらに、サブタワーのうち、line2のように13から始まるものをタワーと呼びます。

◆sequenciable(シークエンシャブル)
同じシークエンスに置くことができるカードをシーケンシャブルな関係といいます。具体的には、
  ・カード番号の偶奇が一致していて、色も同じ場合
  ・カード番号の偶奇が異なっていて、色も違う場合

フリーセルのルール

フリーセルはカードを移動していくことで進行していくゲームです。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になります。

群手 group hand

フリーセルのルールにあるように、カードの移動は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) 

特別な部位

top>