さて、将棋パズルいかがだったでしょうか? 簡単そうに見えて意外と難しかったでしょう? 残り3つくらいまでは割と簡単に行くんですが、 「歩」の18枚、というのが意外と曲者です。
そこで果たしてこのパズルがどのくらい難しいのか、 ちょっとした解析を試みてみましょう (別に答を教えるわけではありません。 ヒントにはなるかも知れませんが。 ただ、人によってはネタバレと感じるかも知れませんので、 自力で解きたい人は戻った方が良いかも知れません)。
なお、ここで用いる解説はtkMTこと滝本君の行った解析を元(というか、ほとんどそのまんま^^;)にしてます。 Thanks!
さて、元のままでは難しすぎるので、大胆な簡略化・抽象化を試みます。 まず、8種類ある将棋の駒を、次の3種類の駒に分類します。
さて、このように大胆な簡略化を行うと、問題は
9×9の盤の中に、2つの「縦」、6つの「石」、32個の「歩」、 を互いに取られないように並べるという問題へと簡略化されます。
この簡略化は、元の問題の完全なサブセットとなっていることに注意して下さい (元の駒が行けなかった場所に行けるようになっている駒はありません)。 つまりこの簡略版パズルが解けなければ、絶対に元のパズルも解けない、 ということになります。
まず、2つの「縦」を置きます。これはどこに置いても2つの列を占拠してしまうため、 この2つの列には他のどの駒も置くことはできません。 よって、残りの駒を「7×9の盤」の中に敷き詰めるのと同じことになります。
縦 | 縦 | |||||||
さて、残り「7×9の盤」に、一体「歩」は最大でいくつ置けるでしょうか? これは簡単ですね。1列おきに敷き詰めればよいのので、最大7×5=35個まで置けます。
縦 | 縦 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 |
歩 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 | ||
歩 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 | ||
歩 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 | ||
歩 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 |
さて、先ほどの仮定より、実際には「歩」は35枚ではなくて、32枚しかありません。 つまり3枚分のスペースが空きます。ということで、 その取り除いた「歩」の前のスペースも合わせて、6つのマスが空きます。
縦 | 縦 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 |
歩 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 | ||
歩 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 | ||
歩 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 | ||
歩 | 歩 | 歩 | 歩 |
というわけで、残る「石」6枚を、その空いたスペースに敷き詰めて終わりです。
縦 | 縦 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 |
歩 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 | ||
歩 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 | ||
歩 | 歩 | 歩 | 歩 | 歩 | 歩 | 歩 | ||
石 | 石 | 石 | ||||||
歩 | 歩 | 歩 | 歩 | 石 | 石 | 石 |
元の問題よりも大分易しくなっているはずの条件でも、 全ての桝目が埋まってしまいました。条件としてはギリギリで、 これ以上1枚も増やすことはできません。
これを元の駒の動きの条件で行うのですから、いかにこの問題がギリギリで難しいか、 ということがわかりますね。「ホントに解けるの?」という人もいるでしょうが、 ちゃんと解はあります。頑張ってみて下さい。
しかし当方のJavaの経験が浅いため、解けた人の名前を登録してもらう、 とかそういうことができてないので、一体何人くらいの人がクリアできたのか、 知ることができないのがもどかしいですね。 自力で解けた! という人は是非メール下さい。