【パズル「ヘプタモンド」の解き方】

tsurinews2006-02-27

先日話題になった(どこで?!)「ヘプタモンド」のパズルをコンピュータプログラムを使って解く方法を紹介しよう。ただしロジックというか考え方だけなので実際にこれで正解がでるかどうかは分からないので皆さんの判断を仰ぐ。
文字だけでどれだけ説明出来るか、どれだけ理解してもらえるか、それが問題だ。まずパズルのケース想定する6個ツノがある星型だ(あっ雪の結晶型か)。その型のツノの先は潰れている。前にもこの日記に書いたが、中に入るコマは三角形を7個くっ付けた形だ。それが24個あるのでコマの埋まる部分は三角形168個で出来ている。それを分かりやすいように縦横並べる。こんな感じ(文字だけで説明している?!)

01×××××××××××××××××××××
02××××××××△▽△▽△××××××××
03×××××××△▽△▽△▽△×××××××
04××△▽△▽△▽△▽△▽△▽△▽△▽△××
05×△▽△▽△▽△▽△▽△▽△▽△▽△▽△×
06×▽△▽△▽△▽△▽△▽△▽△▽△▽△▽×
07××▽△▽△▽△▽△▽△▽△▽△▽△▽××
08××△▽△▽△▽△▽△▽△▽△▽△▽△××
09×△▽△▽△▽△▽△▽△▽△▽△▽△▽△×
10×▽△▽△▽△▽△▽△▽△▽△▽△▽△▽×
11××▽△▽△▽△▽△▽△▽△▽△▽△▽××
12×××××××▽△▽△▽△▽×××××××
13××××××××▽△▽△▽××××××××
14×××××××××××××××××××××
これでコマを入れるケースは出来た。次はそこに入れるコマだ。一番簡単な図形は棒状のものだ。これをコマiと命名する。コマiの左端を基準として座標(0,0)とする。コマiが横に水平状態にある場合(0,0)が基本なので(0,1)(0,2)(0,3)(0,4)(0,5)(0,6)で表わす(これをコマi1と命名)ことが出来。180°反転で(0,-1)(0,-2)(0,-3)(0,-4)(0,-5)(0,-6)だ(コマi2)。あとは斜め60°毎に4パターンの置き方が出来る。右斜め上だと(0,1)(-1,1)(-1,2)(-2,2)(-2,3)(-3,3)(コマi3)。他に左斜め上(コマi4)、右斜め下(コマi5)、左斜め下(コマi6)があるので、一つのコマの置き方は全部で6通り。でも実は今の6通りとそのコマをひっくり返した場合の置き方があるので12通り(コマi7〜12)になる。
01×××××××××
02×△▽△▽△▽△×
03×××××××××
これを全てのコマについても行いそれぞれのコマの置き方を座標(行列で表わす)。
次に基準の設ける。例えば座標(02,09)から始める。ここにコマi1を置くとすると(02,09)からそれぞれコマi1の行列要素を加算していくと、(02,10)(02,11)(02,12)(02,13)(02,14)(02,15)となり、(02,14)は×なのでNG。コマi2だとすぐに(02,08)になるのでNG。結局コマi5(斜め右下)か、コマi12(斜め左下の裏返し)。こうやって置いたコマとコマの置かれた座標は×印にしていき、あらゆるコマを虱潰しに置いていくのだ。何か出来そうな気がしない?一つ注意は最初の座標が△なのか▽なのかを確認する必要がある。正三角形か逆三角形でコマを表向き置くか裏向きに置くかが決まる。
コマi1とi7の違い。(行列要素は同じ)
『コマi1』
01×××××××××
02×△▽△▽△▽△×
03×××××××××
『コマi7』
01×××××××××
02×▽△▽△▽△▽×
03×××××××××
ロジックは出来上がった。さあ、キミもプログラミングに挑戦してみよ〜う。

画像は「北原ワールドコレクション」〜「ワーゲンバス」