ナンプレ自動生成プログラム 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ポイント)なので、解答は省略。