NoCheck5.exe 取扱い説明書
2022/6/10 1.41 版用
0. まえがき
本書は王手を掛けない「非王手系」の協力詰を検討するためのプログラム NoCheck5.exe（以下、適宜「本プログラム」と呼ぶ）の説明書です。詰将棋は攻方に王手義務がありますが、その王手義務を外した変則ルールの作品の検討を行うために作成しました。「非王手」なので名前が NoCheck なのですが、「５」については単に順番で付けているだけで深い意味はありません。
また、本プログラムはフリーソフトとして配布します。再配布等もご自由に行って構いません。
【注意】本プログラムは検討開始時に無条件に 16MB 強のメモリを消費します。
使用時にはメモリ残量にご注意ください。
１．使用方法本プログラムを適当なフォルダに置き、コマンドプロンプトから以下の形式で入力ファイルを指定します。
C:\>本プログラムへのパス 入力ファイルへのパス
例えば入力ファイル名を test.kif とし、本プログラムと共に C:¥work というフォルダに置いた場合は、コマンドプロンプトを起動してから以下のように操作します。
Microsoft Windows XP [Version 5.1.2600](C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\橋本孝治>cd\work
C:\work>NoCheck5 test.kif
Windows らしく、入力ファイルを NoCheck5.exe またはそのショートカットにドラッグ＆ドロップしても構いません。
もっと便利なのは柿木義一氏の作成した Kifuw（柿木の将棋ソフトウェアから入手してください）から本プログラムを呼び出せるようにすることです。

Kifuw のメニューから、[ツール]→［ツールメニュー設定］を選び、空いた場所を適当に選んでNoCheck5.exe を使うよう設定します。以下は「メニュー４」に登録した例です。

「引数」は二重引用符（”）で囲ってください。これで間にスペースが入るようなフォルダに棋譜ファイルが置いてあっても解析することができます。
設定が終わったら実際に何か入力して試してみましょう。
ここでは「非王手協力詰」（詰む時以外は王手を掛けない協力詰）でのサンプルを用いて説明します。
まずは、通常の詰将棋の編集と同様の手順で盤面・持駒を編集します。

次にメニューの［編集］→［詰将棋情報］を選んで、手数とルールを設定します。
ルールは「分類」の項目に入れてください。

設定が終わったら、適当なファイル名で保存してください。
このときファイル形式は kif か ki2 にしてください。
（bod 形式だと「詰将棋情報」が保存されません）

保存が終わったらメニューの[ツール]からツールメニューを選んで実行してください。
先程の例では「ツールメニュー４」に NoCheck5.exe を登録したので、これを選びます。

解析が行われ、手順が検出されました。
手順・詰上り図が出力されますので、内容を確認してください。
（※1.32 版から初期配置の再表示をしないようにしました。）「継続しますか？」と聞いてくるので、必要がなければここで「Ｎ」（小文字でも良い）を押して打ち切ってください。

更に「Enter キーを押してください」のメッセージが出ます。
実際に Enter キーを押すとプログラムは終了します。
「継続しますか？」に「N」を押下した場合、その時の検討条件や、あらかじめ与えておいた検討条件が「検討条件：」の後に出力されます。
（※1.37 版で追加）結果は元のファイルがあったのと同じ場所に、元の名前に.txt という拡張子を付けて保管されています。
これは再度解析をすると上書きされてしまうので、保管する必要がある場合は名称や場所を変えるなどして、失くさないようにしてください。
出力形式は fmview で閲覧可能な形式になっています。内容自体はただのテキストファイルですので、メモ帳などのテキストエディタでも中身を確認できます。

（メモ帳で開いた例）（fmview で開いた例）

入力は Kifuw で閲覧が fmview というのは変則的ですが、特殊駒を使う場合に備えてこのような仕様

になっています。
【注意】
Kifuw 上で配置を修正した場合は、必ずファイルの保存を行ってください。
保存せずに Kifuw 上の配置だけ変えても、検討対象として反映されません。
2. 詰将棋情報の設定内容
kif ファイルの「詰将棋情報」には次の情報を設定します。
項目
説明
手数手数の上限を指定します「連続協力詰」で受方がｎ手指す場合、手数にはｎを指定します。
（ｎ＋１ではありません。）
分類
ルール名を指定します。
「非王手協力詰」「非王手可協力詰」「連続協力詰」「連続詰」「アナグラム協力詰」「協力詰」の６つが指定可能です。
名称は「協力詰」の部分を「ばか詰」としても同じです。
各ルールの意味は以下の通り。
非王手協力詰：詰むとき以外は王手を掛けてはいけない協力詰
非王手可協力詰：王手義務のない協力詰（※「非連続王手協力詰」と同じ）
連続協力詰：受方が連続して手を指して攻方が１手で受方の玉を詰める協力詰
連続詰：攻方が連続して指して最短手数で受方の玉を詰める
アナグラム協力詰 ：攻守双方が順番が異なる以外同じ手を指す（受先・偶数手）
協力詰：双方協力して最短手数で受方の玉を詰める（王手放置が禁手なのは全ルール共通）

備考

また、1.33 版から「協力逃れ」と「連続逃れ」をサポートしました。
「逃れ」は「王手が掛からない状態にする」というルールです。
1.36 版から「協力自玉詰」（双方協力して最短手数で攻方の玉を詰める）を追加しました。
扱えるのは純粋な協力自玉詰だけです。また「煙」というキーワードを追加しました。これは「協力詰」で「攻方駒数 2 受方駒数 1」、「協力自玉詰」で「攻方駒数 1 受方駒数 2」の指定をしたのと同じ意味になります。また、「非王手可協力詰」を「非連続王手協力詰」の別名としました。
各種のオプションを指定します。
1.35 版以前のオプションは「メモリ」「自由度」「解数」「解図のみ」「開始手数」です。
また、1.36 版から「協力詰」「協力自玉詰」のみで使用できるオプションとして「攻方駒数」「受方駒数」「位置」の 3 つを追加しました。
各項目の間は一つ以上のスペースで空けてください。
メモリ：（1.36 版からサイズの指定が任意になりました）
局面表のサイズを「メモリ 100MB」「メモリ 1GB」のように指定します。
1GB＝1024MB です。数値は整数値のみが使えます。GB の単位を使う場合は、メモリ残量にくれぐれも注意してください。無指定時は 16MB と解釈されます。
32bit 版では約 1500MB が OS から割り当てて貰えるメモリの上限ですが、64bit 版ではもっと大きな値を指定することができます。解析中は局面表以外にもメモリを使います。マシンの残メモリに注意して、充分に余裕を持った値を指定してください。
自由度：（この数値の意味は「4.動作」を参照してください。
）「自由度」という文字列の後に 8 以下の自然数を付けて指定します。
ここで指定した自由度で解析が始まります。
無指定の場合、初形の受方玉の自由度または自由度 1 から開始します。

解数：「解数」という文字列の後に 1 以上の自然数を付けて指定します。
ここで指定した解数を検出すると解析を打ち切ります。
省略した場合や無効な値が指定されると 10 と解釈されます。
（※一部のルールではこの数値に関わりなく、検出した解をすべて出力する場合があります。
）
解図のみ：「協力詰」以外で自由度 8 未満の解を見つけた場合、検討を継続するかどうかの問い合わせがあります。
「解図のみ」を指定することで、この問い合わせを省略し、その時点で検討を打ち切ります。
開始手数：（※1.10 版から追加）
解析を 1 手から開始するのではなく、途中の手数から開始するときに使います。
「開始手数」という文字列の後、始めたい手数を指定してください。
出力抑制：（※1.32 版から追加）解を見つけた時に詰上り図を出さないようにします。
終了時の「Enter キーを押してください」のメッセージも出なくなります。
バッチ処理的に解を大量に出力する場合に便利です。
攻方駒数、受方駒数：（※1.36 版から追加）「攻方駒数」「受方駒数」という文字列の後に 1 以上の自然数を付けて指定します。
「攻方駒数」は詰上り時の攻方盤上駒数と攻方持駒数の和、「受方駒数」は詰上り時の受方盤上駒数を指定します。「アナグラム協力詰」「逃れ」では無効。
位置：（※1.36 版から追加）「位置」という文字列の後に、盤上の位置を表す 2 桁の自然数を付けて指定します。
詰上り時の受方玉の位置が、この指定に一致する解のみを検出します。
「連続詰」「アナグラム協力詰」「逃れ」では無効。

3. 特殊な駒、仕様
本プログラムではｆｍの「石」と同様、不透過・不可侵のマスを指定することができます。
（表記は●）
これは Kifuw では扱えませんので直接テキストファイルで指定してください。
例）石（●で表記）を使った例

また、本プログラムでは受方持駒制限や受先形式にも対応しています。
ただし、通常より駒数を多く使う問題にはまだ対応していません。
4. 動作
ルールが「協力詰」の場合は、解析は「手数」を順に増やして実行されます。
また、解析が終わった後は Enter キーで終了します。
解析中に終了する場合は、Ctrl-C で終了してください。現在の状態を保存するかどうか問い合わせがあります。
（→「7. 中断・再開」を参照してください。）
それ以外のルールの場合、解析は「自由度」「手数」を順に増やして実行されます。
「自由度」は玉が動けるマスの数で、これが小さいまま詰む作品は高速に解を検出することができます。ただし、解を検出しても「全検」にはならないので注意してください。
「全検」をする場合は「継続しますか？(Y/N)：」というメッセージに対し、「自由度」が８になるまで継続を選択してください。
全検する場合は「備考」の欄に最初から自由度８を指定しておいても構いません。
このメッセージを省略し、解が見つかった時点で検討を終えたい場合には、「備考」の欄に「解図のみ」の文字列を入れておいてください。
なお、上記どちらの場合も検出解数が所定の値を越えたら、解析を打ち切る仕様になっています。
検出解数上限を変える場合はオプションで指定してください。
また、左右対称形でも左右対称解は別に数えられます。ここは使用者が「解釈」してください。

解析中は「自由度」「手数」の他に、メモリの使用状況に関する情報も表示されます。
（※1.10 版から表示内容を変更しました。
）これは「局面表」の項目で示されます。局面表の利用率が 100％に近くなると解析の効率が落ちるので、可能ならばより大きいメモリを割り当ててください。
例）局面表：339254／1048576（32.4％：保護 21.3％、非保護 11.1％）上書き 41 回
このメッセージの数値は「局面表に登録された局面の数」と「局面表の登録可能数」を示しています。括弧内は登録された局面の割合で、「保護局面」と「非保護局面」の割合も示されています。メッ
セージの最後の「上書き」は、非保護局面の上書きの意味です。
本プログラムでは、不詰局面の他に、詰むか詰まないか分からない局面も迂回手順回避のために登録しています。また、このような局面の中で重要度が低いとみなされた局面（不詰局面の子局面）は非保護局面として位置づけられ、上書き要求があれば無条件で上書きされます。局面を保管する場合は、まずは局面表の空き場所を探し、混んでいて空き場所がすぐに見つからないと非保護局面を上書きするようになっています。ですから「上書き」の値が 0 でなくなり始めたら解析の効率が少し落ち始め、「局面表」が 100％近くになったら解析の効率が相当落ちていると思ってください。
（局面表が満杯になっても検討自体は継続できます。
）「上書き」の回数は前回表示以降の回数で、累積の回数ではありません。
また、メモリ不足時には以下のように「メモリ不足のため一部のデータの保護を外します」というメッセージが出ることがあります。

このメッセージが出ても検討は続けられますが、できればメモリの割り当てを増やして再検討してください。
5. 出力ファイル
1 項でも説明しましたが、解析結果は入力ファイルのある場所に「入力ファイル名」＋「.txt」の名前で出力されます。従って一般には二重拡張子のファイルになります。また、同じ入力ファイルで連続して解かせると、結果が上書きされるので注意してください。上書きされたら困る場合は、ファイルの名前や保存場所を変更するようにしてください。
出力ファイルは fmview で閲覧可能です。また、1.10 版からプログラムの版数を出力ファイルに残す仕様になりました。
6. 性能の限界
非王手協力詰、非連続王手協力詰は５から６手程度。
連続協力詰ならば、20 手程度が実用的な時間で解ける限界でしょうか。
例えば次のような人間なら一目で解ける作でも本プログラムでは解けません。
例）事実上解けない例（8+1 手の連続協力詰）場合によっては長手数作品でも解けることもあるので、プログラムの挙動から解けそうかどうか判断してください。なお、本プログラムは「協力詰」を解くこともできますが、最も幸運な場合でもｆｍと比べ５～20 倍の時間が掛かるので、ｆｍを使える場合は素直にｆｍを使ってください。
例）長手数でも解ける例（2006 年 4 月 森茂作。
「解図のみ」オプション指定）

7. 中断・再開（1.10 版で追加）
ｆｍのように完全に中断した箇所から再開する機能ではありませんが、本プログラムでもある程度中断・再開が可能になりました。
解析中に Ctrl-C を押下すると、以下のような画面が表示されます。

現在探索中の手順（最大 6 手まで）が表示され、中断するかどうか確認するメッセージが出ます。
これに対し、Y または y 以外の文字を入力すると、中断せずに継続します。
（途中経過を知りたいだけの場合は、続行してください。
）
Y または y を入力すると、今度は現在の状態を保存するかどうか確認するメッセージが出ます。

これに対して Y または y を入力すると、現在の手順・自由度・手数・局面表のデータがファイルに保存されます。このデータは元のファイルがあったのと同じ場所に、元の名前に.ncs という拡張子を付けて保管されています。これを待避ファイルと呼びます。
再開時に特別な操作は不要です。最初から解析を開始するのと同じ操作をしてください。このとき、元のファイルの名前を元に待避ファイルを探しに行きます。ですから、ファイル名の変更や移動はしないでください。待避ファイルが見つかれば保存された手順・自由度・手数・局面表のデータを元に解析を再開します。解析が終了したとき待避ファイルは自動で削除されます。逆に言えば解析が終了するまでは待避ファイルは自動で削除されないので、不要になったら手動で削除してください。

注：
待避ファイルからの再開時は画面に中断時の手順が表示されます。詰手順を検出したわけではないので、間違えないようにしてください。
8. 連絡先本プログラムについて不具合の指摘、要望などがありましたら神無七郎（k7ro.ts@gmail.com）までご連絡ください。あるいは掲示板（http://k7ro.sakura.ne.jp/wait.html）やブログ（http://k7ro.sblo.jp/）
でお知らせいただいても結構です。
9. 更新履歴
日付
版数2022.6.10
1.41

2020.10.20

1.38

2020.8.13

1.37

2020.7.24

1.36

2019.2.6
2017.4.27
2016.12.7
2016.5.9

1.35
1.34
1.33
1.32

2013.6.4

1.30

2011.11.26
2011.6.23
2011.5.20
2011.4.19

1.12
1.11
1.10
1.00

内容
解析時間表示を「秒」から「時分秒」へ変更。
伝統的表記の不具合（香打及び金上が正しく出力されないことがある）の修正。
解数が非常に多いとき途中までしかファイルに出力されない不具合の修正。
その他細々とした修正。開発環境を Visual Studio 2022 Community に変更。
「協力逃れ」で最初の解しか出力しない不具合を修正。「連続逃れ」の手番チェッ
クの不具合の修正。
「協力逃れ」で受先を可に。
メモリ不足時の処理の変更。メッセージ出力の一部を変更。
VCRUNTIME140.dll エラー回避のため、コンパイルオプション変更。
「協力自玉詰」の追加。
「攻方駒数」「受方駒数」「位置」のオプション追加。
メモリ指定の値を任意に。
「煙協力詰」「煙協力自玉詰」「非王手可協力詰」のルール名を追加。
1.34 で不充分だった伝統的表記の再修正。
伝統的表記の修正。初形で王手が掛かっているかどうかチェック。
「協力逃れ」「連続逃れ」のサポート。
「出力抑制」オプションの追加。解検出時に初形を再出力しないよう修正。
棋譜表記の不具合（受方の「生」が出力されない）の修正。
中断・再開に対応。伝統的表記の導入。
「アナグラム協力詰」のサポート。
64bit 対応。詰上り図出力。その他細々とした修正。
受先形式の非王手協力詰等が正しく処理されない問題の修正
局面表が満杯近くなった時の処理に不具合があったため修正
中断・再開の機能追加、開始手数指定機能の追加、局面表の状態表示変更 等
初版公開以上