月刊「理系への数学」数学パズルにトドメをさす?! 今月のFlash
第21回
2012年 4月号
ロジックの糸を解きほぐせ!(その1) 〜全単射のマトリックス〜
ロジックパズルに挑戦

目的

様々な設定で自動生成されるロジックパズルを、対応チェック表を使って解いてみましょう。

表示の都合で文字サイズが小さくなっていますので、こちらの拡大表示版(960×720)もご利用下さい。

ロジックパズルとは

いくつかの物や人について複数の属性(設定1の例では「名前」「最寄り駅」「出身地」)を考え、それらの対応付けを与えられたヒントから特定するパズルです。ここでは、属性同士が必ず1対1対応するようなものを扱っています。

操作方法

設定選択&問題作成

マトリックス左上のメニューに用意されている6種類の設定から1つをクリックして選び、問題作成ボタンをクリックすると,その設定の問題を自動生成します。(初期状態では,6種類の設定のうち1つがランダムに選択されています。)

設定の中身は左上の赤い欄に表示され,自動生成されたヒントは右側の水色の欄に表示されます。

解答方法

左側のマトリックス(属性間対応表)において,同じ物や人の属性として対応関係が成立することが判明した箇所には○を、成立しないことが判明した箇所には×を,マスをクリックしてマークしていきます。そして,既に記入されたマークを元にさらに推論を進め,マトリックスを完成させます。

単純にマスをクリックすると「無表示→○→×→無表示…」の順に変化します。また,シフトキーを押しながらマスをクリックすると,逆に「無表示→×→○→無表示…」の順に変化します。

マークを全部消すには,「マーククリア」をクリックします。

マトリックスを完成させ「答え合わせ」をクリックすると,正しい○はブルーに変化し,間違っている箇所(○があるべきところにない、もしくは、×であるべきところに○がある)が赤字で修正されます。また,1箇所も間違いがなければ「正解」と表示されます。

なお,×については、全てマークする必要はなく,空欄のまま残しておいても構いません。

設定について

各設定で扱う属性の数をm,各属性の値の種類数(=扱う物や人の数)をnとすると,(m,n)の値は設定1から順に(3,5),(3,5),(4,4),(4,4),(5,3),(5,3)となります。

各設定の属性のうちのいくつかは,属性値間の並び順(年齢の高低や,南北といった地理的な配置など)が定義されており,属性値はマトリックスでもその順序にしたがって配列されます。

設定によっては,属性値のうちの1つを扱う物や人の識別子として使用します。例えば,設定1であれば,名前を人の識別子として扱うため,ヒントの中では「名前が一郎の人」の代わりに単に「一郎」という表現を用います。

ヒントについて

各問題で生成されるヒント群は,記事本文の用語でいうと「極小唯一解ヒント集合」となっており,どの1つのヒントを除外しても問題として成立しません。

ヒント集合は,記事で紹介したアルゴリズム(若干効率化しています)に従って生成しますが,その際,初期ヒント集合(完全ヒント集合)としては以下の3つのタイプのヒントを全て網羅したものを用いています。(ただし,対応付けの向きを入れ替えただけというような,等価なヒントに2つの表現があるものについては,そのうち片方のみをランダムに使用します。)

・タイプ1「属性a1の値がp1の人(物)の属性a2の値はp2。」
・タイプ2「属性a1の値がp1の人(物)の属性a2の値はp2ではない。」
・タイプ3「属性a1の値がp1の人(物)の属性a3の値は,属性a2の値がp2の人(物)より○○。」
ただし,タイプ3のa3は,属性値間の並び順が定義されている属性に限り,「○○」は「大きい」「東」など,順序関係の向きを示す表現です。

ヒント群はランダムにシャッフルされた初期ヒント集合から生成されるので,3種のヒントの出現割合やパズルとしての難易度には大きなバラツキがあります。また,ヒントの文言を自動生成するために表現を標準化しているため,日本語として少し読みにくい表現となる場合があります。

なお,ヒント群や設定の文章は,マウスを使ってテキストとしてコピーできるので,気になった問題を保存する際にご利用下さい。