月刊「現代数学」数学パズルにトドメをさす?! 今月のFlash
第35回
2013年 8月号
タイルを敷き詰めろ!(その1) 〜ドミノの隙間はどこ?〜
ドミノを配置しないマスを選ぶ
Adobe Flash Player を取得

目的

最大14×8の長方形の床に、1×1の正方形の黒タイルをいくつか配置し、残りのマスを1×2の長方形の白タイルで敷き詰められるかどうかを調べます。床サイズと黒タイルの配置は手動で設定し、敷き詰め可能な場合は実際の敷き詰め例を自動的に作成して表示します。本編記事で敷き詰め可能とされたケースの実際の敷き詰め例を確認してみましょう。

操作方法

右下の十字アイコンをドラッグして床サイズを決め("done"で決定)、床面をクリックして黒タイル(最大4個)を配置して下さい(再クリックで削除、"done"で決定)。

白タイル(ドミノ)の敷き詰め

パリティチェック

赤と青に塗り分けられた床面のうち、黒タイルの置かれていない部分の赤マス・青マスの個数が一致しない場合は、白タイルで敷き詰めることは不可能なので、"Parity check error!"と表示されます。以下、それ以外の各ケースにおける敷き詰め方法を説明します。

黒タイルが1個以下の場合

黒タイルを置いたマスを含む床面の全てのマスを一筆書きで通る経路(緑色の線で表示)を考え、経路に沿って白タイルを配置します。

黒タイルが2個以上で、床面の縦または横のサイズが1の場合

左上のマスから順に見て、黒タイルが配置されるマスが、赤マス→青マス→赤マス→…と交互に並んでいる場合のみ白タイルが配置可能で、端から順に配置します。

黒タイルが2個(床サイズは縦も横も2以上)の場合

黒タイルを置いたマスを含む床面の全てのマスを一筆書きで通るループ状の経路(緑色の線で表示)を考え、黒タイルの隣のマスから順に経路に沿って白タイルを配置します。(ループの作り方は本編記事参照)

黒タイルが3個(床サイズは縦も横も2以上)の場合

黒タイルの配置された赤マスのうちの片方を除く全てのマスを一筆書きで通るループ状の経路(緑色の線で表示)を考え、経路上の黒タイルの隣のマスから順に経路に沿って白タイルを配置します。(ループの作り方は本編記事参照)

黒タイルが4個(床サイズは縦も横も2以上)の場合

以下の(1)〜(3)の操作を繰り返すことで、白タイルを配置します。

(1) 未配置のマスで四方が床面の端または他のタイルで囲まれているものがあれば、配置失敗と判定する。
(2) 未配置のマスで三方が床面の端または他のタイルで囲まれているものがあれば、そのマスと隣の空いているマスの2マスに白タイルを配置する。
(3) (1)(2)のどちらもなく、未配置のマスがまだある場合は、左上端から順にみて最初に出現する未配置マスに白タイルを配置する。(床サイズの横≧縦の場合、左の行から順に、同じ行内では上から順に調べ、最初に出現した空きマスの下が空いていればその2マスに縦に白タイルを配置し、そうでなければ右のマスと2マスに横に白タイルを配置する。横<縦の場合は、同様の操作を縦横入れ替えた形で行う。)

なお、(1)で配置失敗となった場合、そこに至るまでに(3)による配置が行われなかった場合はその時点で配置不可と判定します。それ以外の場合は、その孤立した空きマスと、それに隣接する直前に配置された白タイルのマスをつなげた2マスに配置変更不可の白タイル(×印のマーク付き)を配置し、配置変更不可以外の白タイルを全て取り除いた上で、あらためて(1)〜(3)の操作を繰り返すものとします。