ナンプレ問題自動生成エンジン V2.0
XML
SAVEにより作成した問題をファイルとして保存したり、 LOADにより、問題ファイルを読み出して盤面に示すことができます。
問題ファイルは、データ形式として、XMLになっています。
XMLの詳細についてはここでは省略し、プログラマーズメモの中で示します。
以下に、どのような形になっているかについての例を示します。 実際の問題ファイルでは、改行がほとんど入っていませんが、 問題との対応がつけやすいように適当に改行を加えています。
【例1】
ヒントマス、白マスにも数字を指定して問題の自動生成を行った。
生成された問題
セーブされたファイル: "xmlsample-1.xml"
改行を入れて見やすくしたXML。
生成時に指定した数字が、<hidden>の中に入っている。
<?xml version="1.0" encoding="UTF-8" ?> <problem size="9" name="Number Place" author="Number Place Generator"> <question difficult="3010"> 0 0 3 0 0 0 9 0 0 0 5 0 2 0 7 0 1 0 7 0 0 0 1 0 0 0 2 0 6 0 1 0 0 0 4 0 0 0 7 0 0 0 2 0 0 0 1 0 0 0 9 0 3 0 6 0 0 0 4 0 0 0 3 0 9 0 8 0 2 0 5 0 0 0 2 0 0 0 7 0 0 </question> <constraint diagonal="off"> <group block="on"> 1 1 1 2 2 2 3 3 3 1 1 1 2 2 2 3 3 3 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 4 4 4 5 5 5 6 6 6 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 9 9 9 7 7 7 8 8 8 9 9 9 7 7 7 8 8 8 9 9 9 </group> </constraint> <answer> 1 2 3 5 6 8 9 7 4 4 5 6 2 9 7 3 1 8 7 8 9 3 1 4 5 6 2 9 6 5 1 2 3 8 4 7 8 3 7 4 5 6 2 9 1 2 1 4 7 8 9 6 3 5 6 7 8 9 4 5 1 2 3 3 9 1 8 7 2 4 5 6 5 4 2 6 3 1 7 8 9 </answer> <hint> 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 </hint> <hidden> 1 2 3 0 0 0 0 0 0 4 5 6 0 0 0 0 0 0 7 8 9 0 0 0 0 0 0 0 0 0 1 2 3 0 0 0 0 0 0 4 5 6 0 0 0 0 0 0 7 8 9 0 0 0 0 0 0 0 0 0 1 2 3 0 0 0 0 0 0 4 5 6 0 0 0 0 0 0 7 8 9 </hidden> </problem>
【例2】
サイズ7のジグソーナンプレ。さらに、対角線も指定した。
今回は、初期の数字は指定していない。
以下に、自動生成時の指定と、生成された問題を示す。
セーブされたファイル: "xmlsample-2.xml"
改行を入れて見やすくしたXML。
ジグソー分割が、<group>の中に、ブロック毎に同じ数字で示されている。
対角線の指定は、<constraint>の属性 diagonal="on" で示されている。
<?xml version="1.0" encoding="UTF-8" ?> <problem size="7" name="Number Place" author="Number Place Generator"> <question difficult="2085"> 0 0 0 0 6 0 0 0 0 0 0 4 5 0 0 0 0 0 0 1 3 0 0 0 0 0 0 0 1 4 0 0 0 0 0 0 7 1 0 0 0 0 0 0 2 0 0 0 0 </question> <constraint diagonal="on"> <group block="on"> 1 1 1 2 3 3 3 4 1 1 2 3 3 3 4 1 1 2 3 5 5 4 6 6 2 2 5 5 4 6 6 2 2 5 5 4 6 6 7 7 7 5 4 4 6 7 7 7 7 </group> </constraint> <answer> 5 2 4 7 6 3 1 2 1 3 6 4 5 7 4 6 7 5 2 1 3 7 3 5 4 1 6 2 1 4 6 2 3 7 5 6 7 1 3 5 2 4 3 5 2 1 7 4 6 </answer> <hint> 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 </hint> <hidden> 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 </hidden> </problem>

