Size6

ナンプレ自動生成プログラム Version 2.0

サイズ6のナンプレの作成例

サイズ6のナンプレで、ブロックが以下の分割で、ヒントの配置が以下の場合について、 問題を生成するプログラムを作る。

問題は生成できるまで試行を繰り返す。 出来上がった問題に対しては、難易度ポイントを計算する。

以下のプログラムを作ってみました。 詳しい説明は省略しますが、理解は容易かと思います。

Size6.java

package jp.gr.puzzle.npv2.sample;

import java.util.ArrayList;
import jp.gr.puzzle.npv2.core.*;

public class Size6 {
        final static int numSize = 6;
        static int[] hint = {
                        0,0,0,1,0,0,
                        0,0,1,0,0,0,
                        0,1,0,0,0,1,
                        1,0,0,0,1,0,
                        0,0,0,1,0,0,
                        0,0,1,0,0,0             };
        
        private static int[] hidden = new int[numSize*numSize];
        static SolverMethod method = new SolverMethod();

        public static void main(String[] args) {
                System.out.println("Size6");

                int[] problem = null;
                ArrayList<Integer[]> blockarraylist = Utility.makeNormalBlock(numSize,
                                3, 2);

                BlockConstraint block = new BlockConstraint(blockarraylist, numSize);
                Generator generator = new Generator(numSize, hint, hidden, block);
                generator.setMethod(method);

                while ((problem = generator.generate()) == null)
                        ;
                int point = (int) Evaluator.evaluate(numSize, block, problem);
                System.out.println("point " + point);
                Utility.printGrid(problem, numSize);
        }
}

実行結果

Size6
point 304
 0 0 0 3 0 0
 0 0 5 0 0 0
 0 6 0 0 0 5
 3 0 0 0 4 0
 0 0 0 2 0 0
 0 0 2 0 0 0

実行結果を問題図として示すと、以下のようになります。

やさしい問題(304ポイント)なので、解答は省略。

Copyright(C) 2007 Time Intermedia Corporation. All Rights Reserved.

株式会社タイムインターメディア | 自動生成エンジンとは | お問い合わせ | About Us