(Japanese, UTF-8)
----------------------------------------------------------
     「クロスワード ギバー」の技術文書 TechNote.txt
 Copyright (C) 2013-2022 片山博文MZ. All Rights Reserved.
----------------------------------------------------------


【基本操作】

「ファイル」メニューの「問題を自動生成する」か「問題を自動
生成して答えを表示する」を選んで計算させれば、問題を自動的
に作成することができます。

「ファイル」メニューの「黒マスパターンから自動生成」を選ん
でパターンを選択すれば、選んだパターンを元にして問題を作成
できます（こっちの方が早いです）。

解を作成したら、「解」メニューから「解を表示する」か「解を
表示しない」で解の表示を切り替えることができます。

「ファイル」メニューの「問題を保存...」で、作成した問題を
保存することができます。保存したファイルはギバーで開くこと
ができます。

「ファイル」メニューからクロスワードを画像ファイル（BMP か
EMF 形式）として保存することもできます。印刷も可能です。

「編集」メニューからクロスワード データをコピー・貼り付けす
ることもできます。

マスのダブルクリックで二重マスを指定または解除できます。
「次の二重マス単語」で自動的に二重マス単語を選ぶことができ
ます。「解」メニューの「二重マスをすべて解除する」で、二重
マスをすべて解除することができます。

編集モードで表示される赤い十字カーソル（キャレット）は、矢
印キーで移動できます。十字カーソルが表示されないときは、二
重マス以外の編集はできません。

スペース (空白) キーで十字カーソルのある場所に黒マスを置い
たり、文字や黒マスを消すことができます。

入力モードは、「入力」メニューから変更できます。カナ入力の
ときは、ローマ字入力でマスにカナを入力できます。英字入力の
ときは、アルファベット入力でアルファベットをマスに入力でき
ます。

漢字入力のときは、半角／全角キーで IME を有効にしてから、か
なを入力し、漢字に変換した後、確定させると、マスに漢字を入
力できます。漢字１字を他のプログラムでコピーしてから、ギバー
に貼り付けることもできます。

辞書は、「辞書」メニューから選択できます。


【ファイルについて】

保存したクロスワードは、拡張子が .xwj か .json か .xd になっ
ています。.xwj ファイルの中身は、JSON 形式のテキストファイ
ルとなっています。これらは、UTF-8 に対応したテキストエディ
タなどで閲覧することができます。.xdファイルは、シンプルな
形式で扱いやすいと思われます。

拡張子 .xwd のファイルについては保存できなくなりましたが、
開くことはできます。

サクラエディタは、無料のテキストエディタです。

    サクラエディタ
    http://sakura-editor.sourceforge.net/

Windows で拡張子の関連付けを行うと、保存したファイルをダブ
ルクリックで開けるようになります。使っている Windows の種類
によってファイルの関連付けの方法は異なりますので、Yahoo! な
どで

	「Windows10 関連付け」

などと検索して、やり方を調べて下さい。

ファイルを保存したときに、追加で「..._files」のようなフォル
ダが作成されます。これは保存したファイルの見た目を決める
ファイルが含まれています。見た目が重要でなければ「..._files」
は必要ありません。


【解について】

クロスワードギバーでは、クロスワードの問題を作るときの答え
を「解」ということにしています。

空きマスがある場合は、解になりません。

辞書ファイルに登録されていない単語がある場合は、解になりま
せん。

単語の候補がない箇所がある場合は、解になりません。

黒マスは縦横に連続してはなりません（連黒禁）。黒マスによっ
て盤面が分断されてはなりません（分断禁）。

四隅には黒マスは置けません。三方向が黒マスで囲まれたマスを
作ってはいけません。

    クロスワードパズル
    http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E3%83%91%E3%82%BA%E3%83%AB

    黒マスルール
    http://ja.wikipedia.org/wiki/%E9%BB%92%E3%83%9E%E3%82%B9%E3%83%AB%E3%83%BC%E3%83%AB


【辞書ファイルについて】

クロスワード ギバーが読み込める辞書データファイル（辞書ファ
イル）は、次のような形式になっています。

    # コメント（著作権表示などをここに記述する）。
    単語1<TAB>ヒント文章1<TAB>タグ情報
    単語2<TAB>ヒント文章2<TAB>タグ情報
    単語3<TAB>ヒント文章3<TAB>タグ情報
    単語4<TAB>ヒント文章4<TAB>タグ情報
    ...

<TAB> は、タブ文字を表しています。タブ文字は、キーボードの
左側の [Tab] キーを押すと入力できます。辞書ファイルを編集す
るときは、タブ文字が見えるテキストエディタを使うことをオス
スメします。

サクラエディタは、無料のテキストエディタです。

    サクラエディタ
    http://sakura-editor.sourceforge.net/

半角の「#」で始まる行は、一行コメントとして無視されます。コ
メントにファイル名と著作権情報を記載して下さい。コメント以
外の行は、単語、タブ文字、ヒント文章、改行という形式になっ
ています。ヒント文章とタグ情報は省略できます。ヒント文章を
省略すると、後で文章を打ち込むことになります。タグ情報は、
単語を分類するためのもので「テーマ」設定で使用できます。
タグ情報は、タブ区切りでもカンマ区切りでも構いません。

辞書ファイルの文字コードは、Shift_JIS、Unicode、UTF-8 のい
ずれかです。Unicode か UTF-8 の場合は、なるべく BOM を付け
るようにして下さい。UTF-8推奨です。

辞書ファイルは、拡張子が.tsvか.dicでなければいけません。

ひらがなの単語は、読み込むときに、カタカナに変換されます。
「ッ」などの小さなカナは、大きなカナに変換されます。半角の
単語は、全角に変換されます。

辞書ファイルに登録されている単語の個数は、十分大きくないと
いけません（カナの場合は 5000個以上、英字の場合は 3000個以
上）。単語の文字の並びや長さは、まんべんに散らばっていなけ
ればいけません。単語の数が少なかったり、単語の分散や長さに
かたよりがある場合は、計算がなかなか終わらないことがありま
す。付属の「dict_analyze」プログラムで単語の長さの統計がで
きます。

基本辞書データは MIT ライセンスですので、ライセンスに違反
しない限り、それを編集して別の辞書データを作成してもかまい
ません。パズル界を退屈にしないために、自分独自の辞書データ
を作りましょう。それはあなたの貴重な財産となります。いい辞
書データができたときは、販売や公開をご検討下さい。

辞書ファイルの公開状況は、「片山博文MZの掲示板」で確認でき
ます。

    「片山博文MZの掲示板」
    http://katahiromz.bbs.fc2.com/

辞書ファイルをインターネットなどで公開、または配布するとき
は、ファイルサイズを小さくするために、また、勝手に文字コー
ドが変換されないように、ZIP 形式で圧縮して下さい。また、新
しい辞書ファイルを公開したら、掲示板にご報告下さると助かり
ます。


【計算方法】

再帰と乱数をばりばり使って解いています。詳しくは、ソースコー
ドを見ればわかるかと思いますが、ここで簡単に説明しておきま
す。

(a) 空白のみのときは、最初にランダムに単語を選んで１つ配置
    します。

(b) 盤が正当かどうか確認します。盤が正当でなければ解はあり
    ません。

(c) 空白があれば、空白と文字の隣り合う並びを探し、空白と文
    字から成る連続するマスの並びのパターンから候補を探しま
    す。候補のリストは、乱数を使って乱雑に並び替えた後、順
    番に当てはめて (b) に再帰し、分岐します。

(d) 空白がなければ、解かどうか確認します。解であれば、すべ
    ての処理を終了させます。

マルチスレッドで確率的に早く解けるようにしています。

あと、さらに確率的に早く解けるように、一定時間経過したら、
自動的に再計算ができるようにしています。

タイムアウト・リトライ方式でランダムに解を探しているので、
当然、計算能力の遅い環境では全部計算する前にタイムアウトに
なってしまい、いつまで待っても解が見つからないという症状が
発生する恐れがあります。このような場合は、計算能力の高い
パソコンに買い替えるか、パズルのサイズを小さくして下さい。


【計算時間の目安】

標準的な環境（Win7 64bit Core i5）では、計算時間の目安は次の
ようになります（「問題を自動生成する」、「基本辞書データ（カ
ナ、自由）」使用、「スマート解決」なしの場合）。

    6×6マス ：    8秒
    6×10マス：   18秒
    7×7マス ：   48秒
    7×10マス：   80秒
    8×8マス ：  250秒
    8×10マス：  500秒
    9×9マス ： 1500秒

「黒マスパターンから自動生成」を使用すればもっと早く解を見
つけられます。

残念ながら、通常の環境においてクロスワード ギバーで 20×20
マス以上のサイズをゼロから生成するのは、現実的ではありませ
ん。巨大なクロスワードを作るのでしたら、他のソフトをお使い
下さい。

Retry が 100 以上になる場合は、計算が遅かったと思ってあきら
めて下さい。できるだけ速い CPU （Intel Core i7 以上）にして、
メモリは 2GB 以上積みましょう。マルチコアの場合、コアが多け
れば多いほど、計算が速くなります。

当たり前ですが、他のプログラムがCPUを使っていると、その分、
計算が遅くなります。

Ver3.8 から「スマート解決」機能が追加されました。これは黒マ
スを事前に配置してから、黒マス追加なしで解を求めるという方法
で計算します。これにより、計算速度が劇的に改善することが確認
されています。しかし、現状では６文字以上の長さの単語が使えな
い、連続生成で使えないなどの問題もあります。

「基本辞書データ（カナ、自由）」使用、「スマート解決」ありの
場合、標準的な環境（Win7 64bit Core i5）では、計算時間の目安
は次のようになります。

    6×6マス ：    3秒
    6×10マス：    9秒
    7×7マス ：    5秒
    7×10マス：   10秒
    8×8マス ：   20秒
    8×10マス：   40秒
    9×9マス ：   80秒
    10×10マス： 140秒
    11×11マス： 220秒


【作り方のこつ】

黒マスルールは、出版社によって異なることがあります。投稿す
る前に必ずご確認下さい。

上記の「辞書ファイルについて」を参考に、自分独自の辞書ファ
イルを作成してギバーで使うことができます。
