2015年6月27日土曜日

思考パズル:ピクチャーロジックパズルの解き方・応用編

 塗られるマスの数を頼りにマス目を塗りつぶして解いていくピクチャーロジックパズル。
普通に考えれば、数字の情報にそって塗りつぶすマスを追い、パズルを完成させていく流れになると思います。

しかしながらパズルというものは非常に奥が深い物で、正攻法だけではなかなか解けません。
通り一遍で数字に従って塗るだけでなく、ヒントの特徴を見て塗るマスを増やしていくことも重要になります。
また塗るマスだけではなく、時には与えられた情報の「行間を読む」ことにより、塗らないマスを確定していくことも必要となるのです。


<ヒントを読み解く>

 特に重要になるのが、現在の状況から「矛盾」を導くというやりかたです。
これは初中級者だと意外とやっていないかもしれない方法ですが、ヒントを元にして「塗らないマスを増やす」という方法になります。
「マス目を塗るパズルで塗らないマスを増やす?」と思われる方もいるでしょうが、手詰まりや塗り間違いを防ぐにはこれがわりと有用なのです。

 例えば、連続で塗るマスの塊が2つあり、それ以外に未確定のマスが多数あるケースを考えます。

 今、横10マス、ヒントが「2・2」の例について考えてみます。
この場合だと、横10マスに対して塗られるマスは2+2で4つ、残りの6マスは塗らないマスです。
さらに、列(縦方向)のヒントにそって塗った後に連続しない2マスが確定したと仮定します。


 まず、連続しない2マスが塗られるマスとして確定したケースを考えます。

例えばこのように、両端から2マス目がそれぞれ塗られるマスとして確定したとしましょう。
そうすると、普通に考えれば確定したマスだけを塗りつぶし、それ以外は不確定であるとして何も塗りません。

しかし、よくよくヒントを見てみましょう。
ヒントとして与えられた数字の個数は「2」です。
そして、すでに確定しているマスは、塗りつぶさないマスを挟んで「2つ」です。

ということは、残りの2マスは確定マスの左右に限られ、それ以外の中央4マスは「塗られないマスで確定」できるのです。
青が未確定、Xが塗られないことで確定
その結果、たった2マス確定しただけで6マス分の状態が確定することになります。

ちなみに確定した2つのマスの間に1マス分の空きしかない場合は、その時点で全マスの状態が確定することになります。
空きの部分を塗ってしまうと3マスが連続してしまうことになるので、これは当然ですね。
また端以外の場所で塗る2マスが確定した時は、グリッドの端と未確定マスに挟まれた間が塗られないマスとして確定されます。


 次に、塗られないマスが確定したケースを考えてみましょう。


例えば上の例とは逆に、両端から2マス目がそれぞれ塗られないマスとして確定したとしましょう。
そうすると、確定するのは塗られないマスだけなので、それ以外は状態を特定できないように感じます。

しかしこのケースも、ヒントをよく見ればすべてのマスの状態を特定できるのです。

ヒントで指定された塗られるマスは、「2連続」が2つです。
ということは、逆に言うと「2連続で塗れないマスは塗られないマスで確定できる」ということです。

これを当てはめてやると、例のケースでは両端がそれぞれ1マス分しか空いていないので、ここも塗られないマスとして確定できるのです。
そうすると残りは6マスで、塗られる4マスとその間の塗らないマス1つを入門編のやり方で特定していけば、このようになります。

なんと、すべてのマスの状態を特定できてしまいました。
あとは未確定のマスが4つ残っているので、そこを確定してやればこの列はすべて確定できます。


 それとは逆で、「ヒントの共通点から塗るマスを増やす」という方法もひとつご紹介。

今、「3、8、6」というヒントのある行で、塗らないマスと塗るマスが連続する形で1つづつ確定したとします。
さてこのとき、他に状態を特定できるマスはいくつあるでしょう。

答えは2マス。

確定できるのは、「塗る」で確定したマスの隣2マス分になります。
ちなみにその隣は、他のマスの確定状況によって塗るか塗らないかが分かれるマスになります。
なぜそう断言できるのか。

その答えは非常に簡単で、ヒントの数字が「3以上」だからです。
3以上ということは、1マス確定すればその周囲2マスは必ず「塗る」になります。
その上で塗るマスの隣のどちらかが塗られないマスとして確定されれば、必然的にその反対側に塗るマスが2つできる、ということです。

これは塗るマスの多い(=数字が大きいヒントが並ぶ)パターンで比較的よく見られるものなので、覚えておくと手詰まりで悩む率が減ってくれる、と思います。


 実はピクチャーロジックパズルで手詰まりになるケースは、解答者のうっかり(確定マスを塗り忘れたなど)や出題内容に問題があるものを除くと、多くは上記のパターンで先に進められるようになります。
特に下の方の2つは見落とす割合が高い割に、手詰まりの原因になっていることが多い傾向にあります。
塗るマスだけでなく塗らないマスが確定した場合にも、他に確定できるマスがないかを見直してみたほうが良いでしょう。


<出題者の意図を裏読みする>

 また、少しいびつなやり方ですが、出題者の意図や出題パターンを推測して塗ってしまうという方法もあります。

例えばハートマークのように左右対称の図形が答えの場合、ヒントも真ん中のグリッドを挟んで左右に同じものが並ぶことになります。
このケースでは、通常端攻めが有効というパズルの定跡に加え、対象図形特有の定跡からも解答を導けます。

  • ヒントの個数が偶数なら、中央は「塗られないマス」で確定できる
  • ヒントの個数が奇数なら、中央(とその周囲の連続マス)は「塗るマス」で確定できる

ある程度の慣れは必要でしょうが、うまくいけばものの数分、グリッドが広い場合は10数分くらいであっという間に解けてしまうようになります。

ちなみに一部の行または列だけが対称形になっているものや、対称形から模様の一部を反転させてやや複雑に見えるようにした準対称形とも言える発展形などもあるので、縦横のヒントを照らし合わせながら確定していくようにしましょう。

2015年6月14日日曜日

ゲーム小ネタ:A列車3Dでインターチェンジ風交差を作る

 A列車で行こう3D(以下、A3D)では新たに、高架道路と接続するための「交差」という分岐専用道路が追加されました。
これにより従来作では違和感しかなかった「高架道路上の交差点」ができなくなり、より高速道路風の高架道路が作りやすくなりました。

反面、交差道路には制限も多く、インターチェンジ風の接続点を作るとなるとかなりの手間がかかってしまいます。
またうまく作ったと思っても、接続できない方面ができたり、同じ方面に接続する道路が複数できていたりと、実際に車を走らせてみて失敗に気づくことも少なくありません。

 例えば、このような交差ポイントがあったとします。

普通に交差を使用して上下の道路を接続するとこうなります。

一見これで問題ないように見えますが。。。
実際には赤矢印のように「道路をまたぐ」ような接続線はできていないため、こういった乗り換えが出来ません。
これは、交差の出入口では中央のラインや分離帯を乗り越えて曲がることはできないためです。


 これを踏まえた上で単純に作るとなると、上下の道路を交差で直接接続するのではなく、平面交差点を使って接続できるようにする方法が有力です。
交差点付近が混みあうことになりますが、道路を横断できるためどちらからでも接続できます。
しかもわりとシンプルな見た目に落ち付きます。

 ひとつは「交差」コマンドで出来る上下線セットの交差道路をワンセットとして別の道路に接続し、それと幹線道路を平面交差点で接続するやり方です。
(この図だと高架の影になって手前のインターに接続する道路が見えませんが。。。)
これは比較的オーソドックスだと思います。

 もうひとつは、「登り口」と「降り口」をそれぞれワンセットにして接続道路につなぐやり方です。

こちらだとわりとスマートに見えますが、残念ながら下の方は上りまたは下りのどちらかで登り口の先に降り口がある異常な接続になってしまいます。
一応、接続線の高さを高速道路がまたげるようなところまで上げ、うまくクロスするように道路を配置すれば解消できますが、その分だけ道路のつくりが複雑になります。


 もちろん、交差を駆使して無理やり接続線を作ることも出来ます、が。。。
たった一本だけでこんなに複雑怪奇な物となってしまうので、正直おすすめはできません。
(これはかなりシンプル化したもの!で、実際には別の接続線との兼ね合いでカーブや交差、勾配が多用されることになります)
もしうまくいったとしても広大な敷地(マス目)が必要になるうえ、パズルのような試行錯誤を繰り返さないといけないのでコストも馬鹿になりません。


 後は、あくまでも「理論値」となりますが、「ロータリー方式」を使ったこんな形状も考えられます。


高架への接続線をロータリーのように設計し、ぐるぐる回りながら接続してもらおう、という感じですね。
ただし実際にやると、橋脚(特に交差の必須部分)の取り回しがかなり難しいので、うまくコンパクトに収めるのはかなり手間がかかります。(インターだけの街にするわけにいきませんしね)
また、登り口と降り口が同じ道路に接続されるため、現実にあったらおそらく渋滞及び事故多発地帯になるでしょう^ー^;

似たような形状は作ったことがあるのでおそらくやれなくはないと思います。
チャレンジャーはやってみてください。
ただ地上接続線で「タダ乗りしてくるモブ車」が沸くことがあるので、気になる人は勾配をうまく使ってやる必要があるかもしれません。