====== リファレンス(基本コマンド編) ====== ~~SOCIAL_META: description = Edaxの基本コマンドのリファレンスです。 ~~ Edaxのコマンドについて、ヘルプの説明だけではよくわからないものもあるので、仕様を整理してみました。コマンドにもいろいろな種類がありますが、今回は基本的なコマンドについて整理しました。それ以外のものについては下記リンクを参照ください(リンク切れのものは未作成です) * 基本コマンド(本ページ) * [[edax:ref_command_book|Book系コマンド]] * [[edax:ref_command_db|データベース系コマンド]] * [[edax:ref_command_test|テスト系コマンド]] * [[edax:ref_option|オプション]] このページの内容は基本的にVer4.4のソースに基づいて記述しています。バージョンによってはサポートされていないコマンドがあったり、動作が異なる場合もあるかもしれません。 [隠しコマンド]と書かれているコマンドはヘルプに記載されていないコマンドですので、使用する場合は自己責任にてお願いします ===== リファレンス ===== ==== 対局系コマンド ==== === init (i) === **書式** init 盤面を初期状態に戻し、新たなゲームを開始します。 === new (n) === **書式** new 盤面を''setboard''コマンドで指定した開始局面に戻し、新たなゲームを開始します。''setboard''コマンドを実行していない場合は、initと同じ効果です。 === setboard === **書式** setboard 開始局面 ''new''コマンドを実行した際の開始局面を指定します。開始局面を設定し、''new''まで実行されたのと同じ効果を持ちます。開始局面の書式は、盤面を表す64文字と手番を表す1文字から成り立つ計65文字の文字列で、盤面の64文字はA1,B1,C1,...,H8の各マスについて以下の文字を並べた文字列です。 * b,B,x,X,* : 黒石のあるマス * o,O,w,W : 白石のあるマス * -,. : 空マス 上記以外の文字は無視されます。手番を表す1文字は、黒なら"b","B","x","X","*"のいずれか、白なら"o","O","w","W"のいずれかを指定します。 **実行例** setboard ---------------------------O*------O**-----O--------------------* 最後の''*''が黒番であることを、その前の64文字が盤面を表します。 このコマンドにはVer4.4より前のバージョンではバグがあり、手番を白番に設定してしまうとその後initで初期局面に戻した時に黒と白が入れ替わった状態になってしまいます。その場合は、もう一度setboardコマンドで黒番の任意の局面を指定してからinitを実行すれば正しい初期局面に戻ります。このバグはVer4.4では修正されています。 === undo (u) === **書式** undo 1手戻します。''mode''コマンドにより人対Edaxになっている時は2手戻します(つまり、1つ前の自分の手番まで戻ります)。 === redo (r) === **書式** redo ''undo''で戻した手を再度1手進めます。''mode''コマンドにより人対Edaxになっている時は2手進めます。 このコマンドにはVer4.4より前のバージョンではバグがあり、''mode''コマンドにより人対Edaxになっている時は1手も進みません。このバグはVer4.4では修正されています。 === play === **書式** play 手 指定した手を打ちます。複数手を指定することも可能です。手はa1〜h8の形式で入力し、大文字小文字は問いません。パスを入力する場合は''pa''または''ps''と入力しますが、明示的にパスを入力しなくてもパスの局面であればEdaxが自動的にパスだと判断して先に進めてくれます。 **実行例** play f5d6c3d3c4 「手」は''play tiger''のように定石名で入力することも可能です(初めて知りました)。あまり需要はないかもしれませんが、是非定石名で入力したいという方は、[[https://github.com/abulmo/edax-reversi/blob/master/src/opening.c|ソースコード]]を参照して指定可能な定石名を確認してください。568行目までがフランス語の定石名、568行目以降が英語の定石名だそうです。どちらも利用可能です。 === 手 === **書式** 手 打つ手をa1〜h8の形式で入力します。大文字小文字は問いません。パスを入力する場合は''pa''または''ps''と入力します。''play''コマンドとは異なり、1手だけ進めることができます。 === force === **書式** force 手 Edaxが序盤に打つ手を指定します。手の書式は''play''と同様で、複数手を指定することも可能です。''go''コマンドを実行した時に、''force''で指定されている範囲であればEdaxは指定された手を打ちます。 **実行例** force f5d6c3d3c4 このコマンドも''play''同様に定石名で入力することも可能です。 === go === **書式** go Edaxに1手打たせます。Edaxは以下の優先順位で打つ手を決めます。 * ''force''コマンドで指定された手 * Bookが使用可能であり、Bookに登録された局面であれば登録されている手 * 指定されたレベルで探索を行った最善の手 === mode (m) === **書式** mode モード番号 黒と白のどちらをEdaxが持つかを指定します。モード番号の意味は以下の通りです。 * 0 : 黒-人, 白-Edax * 1 : 黒-Edax, 白-人 * 2 : 黒-Edax, 白-Edax * 3 : 黒-人, 白-人 Edaxの番になると、Edaxは自動的に手を打ちます。特に''mode''を2にすると終局まで自動的に進みます。 **実行例** mode 2 === stop === **書式** stop Edaxの探索を止めます。プロンプト(''>'')が出ていない状態でも入力して実行することができます。自動対局、''go''コマンド、''hint''コマンド等でEdaxが探索していて、その探索を中止したい場合に実行します。このコマンドを実行すると、''mode''は3に戻ります。 === quit (q) または exit === **書式** quit exit Edaxを終了します。quit,exitのどちらでも構いません。 === eof[隠しコマンド] === **書式** eof Edaxを終了します。以下の条件を満たす場合のみ機能します(実質的に常に機能するものと思われます)。 * auto-quitオプション(これも隠しオプション)が指定されていない * かつ、modeが2以外であるか、終局状態のいずれかを満たす ==== 対局補助コマンド ==== === hint === **書式** hint ヒント数 その局面の候補手とその評価値を出力します。いくつ候補手を出力するかをヒント数に指定します。ヒント数を指定しなかった場合は1つ出力します。候補手は以下の優先順位で出力されます。 * Bookが使用可能であり、Bookに登録された局面であれば登録されている手を評価値が良いものから順番に出力 * 指定されたレベルで探索を行った手を評価値の良いものから順番に出力 **実行例** >hint 6 depth|score| time | nodes (N) | N/s | principal variation ------+-----+--------------+-------------+----------+---------------------- book +0 G6 f8 C5 c6 B4 g5 H6 d2 book +0 C5 b6 D8 c6 C7 d2 B5 a5 book -4 G5 book -6 C6 c5 21@73% -02 0:02.473 36325175 14688708 B3 e3 E2 g4 G3 f2 B5 f8 H5 21@73% -03 0:00.055 556316 10114836 B5 d2 E2 c5 G6 g5 F7 f8 C6 ------+-----+--------------+-------------+----------+---------------------- 出力結果を見る際は、[[edax:level|レベルの意味]]、[[edax:selectivity|%の意味]]、[[edax:book|Bookとは]]もご参照ください。 Bookに悪い手が登録されている場合、Bookに登録されていない良い手よりも先に出力されることになります。 === analyze (a) または analyse === **書式** analyze analyse 現在の局面から初手まで遡って、棋譜内容を解析します。実際に打った手と、それ以外の最善手の比較表が出力されます。出力される表の意味は以下の通りです。 * ply * 何手目の手か * level * Edaxが解析した際の読みの深さとselectivity。Bookは使われないようです。参考:[[edax:level|レベルの意味]] * N alt. * 実際に打った手以外の候補手の数。対象形などで実際に打った手と同じになる手は数から除外されています。 * played move/score * 実際に打った手とその評価値。 * alternative move/score * 実際に打った手以外の候補手でEdaxが探索した結果、最善と判断した手とその評価値。左側に、実際に打った手の評価値との比較が等号・不等号で出力されます 表の右側にコメントがついているのは、実際に打った手よりEdaxが探索した手の方が評価値が高かった場合のもので、コメントの意味は以下の通りです。 * Mistake * Edaxが完全読み(最終局面まで読み、かつselectivity=100%)したもの * Possible mistake * Edaxが最終局面まで読み、かつselectivity<100%のもの * Edax disagrees (strongly) * Edaxが最終局面まで読んでいない場合。stronglyは評価値の差が5以上ある場合に出力されます 最後に出力される集計表には、黒と白のそれぞれについて以下の項目が出力されます。 * rejections : discs * rejectionsの分母は、候補手が存在する局面(N alt.≠0)の内、Edaxが完全読み**していない**数(つまり序中盤まで) * rejictionsの分子は、その中でEdaxの探索した手の方が評価値が高かった手の数 * discsは、Edaxの探索した手の方が評価値が高かった手の、実際に打った手との評価値の差の累積(終盤でいう石損) * errors : discs * errorsの分母は、候補手が存在する局面(N alt.≠0)の内、Edaxが完全読み**した**数(つまり中終盤) * errorsの分子は、その中でEdaxの探索した手の方が評価値が高かった手の数 * discsは、Edaxの探索した手の方が評価値が高かった手の、実際に打った手との評価値の差の累積(石損) * error rate * errorsのdiscs / errorsの分母で算出される値。つまり1手あたりの石損 **実行例** > analyze N played alternative ply level alt. move score score move ---+-------+-----+-----------+--+--------------- 60 0 0 a8 +26 59 0 0 B7 -26 58 3 2 d1 +26 > +18 a8 57 4 1 G8 -26 > -30 B7 56 5 3 h8 +26 = +26 d1 55 6 1 G7 -26 = -26 B7 54 7 4 a7 +26 > +12 g8 53 8 1 B1 -26 < -10 B7 <- Mistake 52 9 6 a1 +10 < +14 g8 <- Mistake 51 10 2 B2 -14 > -20 G7 50 11 7 g1 +14 > +0 g8 (中略) 5 21@73% 5 C4 +1 > -4 C6 4 21@73% 3 d3 -1 > -2 g5 3 21@73% 4 C3 +1 > +0 C4 2 21@73% 2 d6 -1 < +0 f6 <- Edax disagrees 1 21@73% 0 F5 +0 | rejections : discs | errors : discs | error rate | Black | 10 / 17 : +34 | 5 / 11 : +42 | 3.818 | White | 10 / 18 : +28 | 3 / 11 : +22 | 2.000 | Bookを使っていないため、序盤は特にEdaxの判断の方が精度が悪い可能性もあります。 === vmirror[隠しコマンド] === **書式** vmirror 盤面を上下反転します。 === hmirror[隠しコマンド] === **書式** hmirror 盤面を左右反転します。 === rotate[隠しコマンド] === **書式** rotate 角度 盤面を指定された角度だけ反時計回りに回転します。角度は90,180,270が指定可能です。 **実行例** rotate 90 === symetry[隠しコマンド] === **書式** symetry 対称パターン 盤面を指定された対称パターンに従って対称移動します。対称パターンは0〜15の範囲で指定可能です。対称パターンの意味は以下の通りです。 * 0: 元の配置のまま * 1: 左右反転 * 2: 上下反転 * 3: 反時計回りに180度回転 * 4: ホワイトラインを軸に反転(線対称移動) * 5: 反時計回りに90度回転 * 6: 反時計回りに270度回転 * 7: ブラックラインを軸に反転(線対称移動) 8〜15は上記でさらに黒と白を入れ替えた状態になります。 **実行例** symetry 3 === opening[隠しコマンド] === **書式** opening 現局面までの定石名(英語名)を表示します。既に定石を抜けた局面でも、抜ける直前の定石名が表示されます。 手順ではなく盤面と定石名を紐付けた辞書を使って判断しているようです。 === ouverture[隠しコマンド] === **書式** ouverture 現局面までの定石名(フランス語名)を表示します。既に定石を抜けた局面でも、抜ける直前の定石名が表示されます。 英語版より定石数が充実しているようです。読めません... === debug-pv[隠しコマンド] === **書式** debug-pv 手 指定した手(a1〜h8)について、その後の最善進行例を出力します。名称からすると作者のデバッグ用のコマンドと思われます。出力される情報は、探索結果を一時的に記憶しておくhashと呼ばれるメモリから取得しているため、予めhintコマンド等で該当手の探索を行っておく必要があります。 **実行例** >debug-pv c2 pv = C2 g5:20@73%[+07,+07]; C6:19@73%[-07,-07]; e3:18@73%[+07,+07]; D7:17@73%[-07,-07]; c5:16@73%[+07,+07]; E6:15@73%[-07,-07]; d2:14@73%[+07,+07]; G6:13@73%[-07,-07]; f7:12@73%[+07,+07]; B5:11@73%[-07,-07]; e7:10@73%[+07,+07]; F8:09@73%[-07,-07]; b4:08@73%[+07,+07]; A3:07@73%[-07,-07]; e2:06@73%[+07,+07]; B3:05@73%[-07,-07]; h6:04@73%[+07,+07]; G4:03@73%[-07,-07]; 出力される内容は、手、探索の深さ、selectivity、評価値の上限と下限(この意味は未調査)です。 ==== ファイル操作系コマンド ==== === save (s) === **書式** save ファイル名 現在の対局の棋譜を保存します。保存形式はファイル名の拡張子によって決まります。以下の拡張子で保存することができます。 * .txt * .ggf * .sgf * .pgn * .edx * .eps * .svg ''.eps''と''.svg''は画像形式です(画像で保存できるというのは初めて知りました)。 **実行例** save kifu.txt 保存は対局終了の局面で行うことが多いと思いますが、このコマンドにはVer4.4より前にはバグがあり、最終手が黒だった場合にファイル形式によっては黒と白が入れ替わってしまいます。最終手でなくても次に白が打つ局面で保存した場合は同様の現象が起きると思います。回避方法としてundoコマンドにより1手戻して(次に黒が打つ局面にして)から保存すると正しく保存されます。このバグはVer4.4で修正されています。 ''setboard''により開始局面を指定した棋譜を保存する場合、''.txt''形式は保存はできても読み込むことができないようです。開始局面を指定した棋譜は、''.txt''以外のファイル形式で保存してください。 === open (o) または load === **書式** open ファイル名 load ファイル名 指定された棋譜ファイルを読み込みます。''open''でも''load''でも機能は同じです。拡張子によってファイル形式を判断しています。以下の拡張子を読み込むことができます。 * .txt * .ggf * .sgf * .pgn * .edx **実行例** open kifu.txt ''.svg''や''.eps''形式は残念ながら読み込めません。 ==== その他のコマンド ==== === help (?) === **書式** help 対象カテゴリ ヘルプを出力します。対象カテゴリは以下が指定可能です。 * options : オプションに関する説明 * commands : 基本コマンドに関する説明 * book : Book関連コマンドに関する説明 * base : データベース関連コマンドに関する説明 * test : テスト系コマンドに関する説明 対象カテゴリを省略すると、すべてのヘルプが出力されます。 **実行例** help commands === version (v) === **書式** version バージョン情報を出力します。