部分プログラム 1 の作成


問題

与えられた数字に対して,白マスの配置の候補を列挙するプログラムを作成します.

説明

例えば,3という数字がおかれた白マスの周りには,2個の白マスが継らなければなりません.その候補は,
    +---+
    |   |
    +---+  +---+---+  +---+---+      +---+   +---+  +---+
    |   |  |   |   |  |   |   |      |   |   |   |  |   |
    +---+  +---+---+  +---+---+  +---+---+   +---+  +---+---+
    | 3 |      | 3 |  | 3 |      |   | 3 |   | 3 |  | 3 |   |
    +---+      +---+  +---+      +---+---+   +---+  +---+---+
                                             |   |
                                             +---+

                   +---+     
                   |   |
    +---+---+---+  +---+---+  +---+---+---+  +---+---+  +---+---+
    |   |   | 3 |  |   | 3 |  |   | 3 |   |  |   | 3 |  |   | 3 |
    +---+---+---+  +---+---+  +---+---+---+  +---+---+  +---+---+
                                                 |   |  |   |
                                                 +---+  +---+

   … (以下略)
というように多数となります.数字が多くなるほど解の数が大きくなります. 与えられた正の整数(1〜15程度)に対して, これらの候補をすべて生成するプログラムを作成してください. この部分プログラム自身のレポートを作成する場合には, 盤面や解の表現はどのようなものでも結構ですが, 生成された解を人間にすぐにわかる形で表示する機能を部分プログラムの中に組み込み, 動作が確認できるようにしてください.

より進んだ問題

これ必修ではありませんが,以下のプログラムの拡張を考えてみて下さい.
部分プログラム No.1 において, 盤面上の黒マスや他の白マスの配置を考慮し, 配置できないことがわかっている候補を生成しないようにする.

「ぬりかべ」レポートのページへ戻る