記事更新日: 2019年03月31日, 05月06日
将棋
しょうぎ
の
物理
ぶつり
棋譜
きふ
- What is a physical record of shogi?
こんなこと やってるの わたしだけなんで、説明しないといけないよな☆
全体像が知りたければ
第29回コンピューター将棋選手権
の[参加チーム]に置いてある
きふわらべ
のPR文書 でも読んでろだぜ☆
ソースの
Git hub
は ここだが、大会へのライブラリ登録はしてないぜ☆
目次
- Table of contents.
1. 第一象限☆
- First quadrant ☆.
2. 大橋ナンバーズ☆
- Piece identify. Order of "大橋流" (Ohashi-mode) ☆.
3. 半プレイヤー☆
- Player 0.5 and 1.5☆.
4. リバーシブル指し手☆
- Reversible physical move ☆.
5. 使用例 WCSC28_F6_PAL_HFW.csa☆
- Example of use ☆. WCSC28_F6_PAL_HFW.csa ☆.
6. 使用例 WCSC_F2_QHA_TNK.csa☆
- Example of use ☆. WCSC_F2_QHA_TNK.csa.csa ☆.
戻る - back
1. 第一象限☆
- First quadrant ☆.
すべてが新しいので お前とは会話が通じない☆
そこで、今日 初めてコンピューター将棋を見る人間に説明するつもりで 駒を動かしながら 説明する☆
これは、お前らが ふだん 見慣れている後手から見た将棋盤だぜ☆
早く指せだぜ☆
数字が 左向きとか 下向き なのは すっきりしないだろ☆?
何が すっきりしないのか 分からないが……☆
この将棋盤は
Third quadrant
サード クァドリン
☆
早く 指しなさいよ!
数字が 右向きと 上向き なら すっきりするだろ☆?
矢印の方向を 趣味で変えただけにしか見えない☆
きふわらべ は
First quadrant
ファースト クァドリン
で将棋盤を持つぜ☆
どっちでもいいのに……☆
上手
うわて
にしただけじゃないの
戻る - back
2. 大橋ナンバーズ☆
- Piece identify. Order of "Ohashi" mode ☆.
プロには 駒の並べる順番にも 流行りがあるそうだぜ☆
上手の王から、下手の玉、
上手の左金、下手の左金 と交互に置いていくらしい☆ 大橋のおっさんは 右利きだったのかも知れないな☆
どこから並べても同じなのに……☆
親しみの深さを優先し、大橋流の並べ順を 背番号に採用した☆
背番号は 0から 数え始めることにしたぜ☆
偶数は 上手の
位相
いそう
、 奇数は 下手の位相 だな☆
位相とか言うの止めなさい。読者が逃げるわよ!
将棋の駒は 相手の駒を取って 自分の駒になったり、
自分の駒を取られて 相手の駒になったり するので、
偶数が上手、奇数は下手 というのは 駒を取るまで☆
戻る - back
3. 半プレイヤー☆
- Player 0.5 and 1.5☆.
この節では
半プレイヤー
を説明するが、これは無くてもいい。
わたしの理論を 説明 しやすくするために用意しただけの アマージナリィ(Imaginary;想像上の) の概念なので、
他の人は 好きなように 実装すればいい☆
将棋は 先手と 後手 があるが……☆
0.5手と 1.5手 を追加することで、あとで説明に出てくるリクツを カンペキに説明できるようになった☆
4面指しするの?
しない☆
0.5手 と 1.5手 は 記録係 だぜ☆
大橋流で40手 指したところを考えてくれだぜ☆ つまり平手初期局面☆
定刻になりましたので きふわらべの先手でお願いします☆……、
とか言ってる
間(ま)
が 0.5手目だぜ☆
要らんなあ☆
回転方向は 反時計回りな☆
こだわるわねぇ
半プレイヤーを1つ進める符号は | (タテボウ)だぜ☆
1手進めるのに 2本 要るんじゃないの?
要る☆
move
ムーゥ
は 指し手 な☆
コンピューターの中では、1手目を 0 と数える☆
戻る - back
4. リバーシブル指し手☆
- Reversible physical move ☆.
じゃあ、1手 指してみようぜ☆?
7六歩☆
待てだぜ☆
まず最初に タテボウ だぜ☆
盤面 何も変わってないのに……☆
7六歩
ななろくふ
☆
その 日本将棋連盟(JSA)式 の符号は、
わたしが
完全解析
したところ、なるほど、合理的に整理整頓されてるぜ☆
他にも コンピューター将棋選手権式の大会用ゲームサーバーで使われる
CSA符号
、
コンピューター将棋エンジンの思考部を自動対局させるのに向いた
USI符号
もあるぜ☆
JSA
ジェイ エス エー
符号
は 秒読みでも短く読み上げられ、まぎれも無い、
CSA
シー エス エー
符号
は JSA符号をそのままに 移動元を加えただけで、読み上げの利点を捨て、将棋の素人でも駒を動かせる利点を加え、
USI
ユー エス アイ
符号
は 手書きのときに駒を書き漏らすなどのミスを防止する、など それぞれ得意がある☆
これらの符号と異なる、
新しく提案するのが
リバーシブル
Reversible
物理
Physical
指し手
Move
符号、
RPM
アール ピー エム
符号
だぜ☆
フーン
黙って USI使ってればいいのに……☆
RPM符号の利点は 検討シーンの操作も 棋譜に含めることができる
記述のフレームワーク
になることだぜ☆
つまり 囲碁 でも マージャン でも 指で物を動かすゲームの棋譜として 応用可能☆
画面の向こうで そんなこと したくない とか言ってるだろ☆ 動かしながら説明する☆
きふわらべ に
スカイ升
フィンガーチィ(指先)升
を1つ追加した☆
開発中には スカイ升 と呼んでいたので、古い画像では sky升 と描いてあるのが残っている☆
駒台ではなくて?
駒台ではない☆
世界一周も飽きて 空を飛ぶようになったか☆
フィンガーチィ升のアイデアは 計算機科学に出てくる
Tower of Hanoi
ハノイの塔
から もらった☆
空きスペースがないから むずかしい問題になってるんだぜ、 ということを教えてくれる遊びだぜ☆
升の番号を指定すると、すべて フィンガーチィ升 と入れ替える操作だと思ってほしい☆
升の番号を2回指定するだけで ちゃんと 駒が進んだな☆
それが 何の駒なのか 指定することは不要☆
ハハーン。 操作だけに特化したのね
手番の交代のときは、 わざわざ タテ棒 を記述して 区切ってくれだぜ☆
タテ棒の代わりに、 [2] とか手目を書いて それを区切りに使ってもいい☆
手番の交代が分かればなんでもいい☆
慣れてくると、 半角空白区切りで 符号をつなげて 一気に操作してもいい☆
先頭から 逐次 読み取るだけなんで 同じことだぜ☆
じゃあ 先手番一手損角換わりで☆
あわてるなだぜ☆
まずは タテボウ だぜ☆
その タテボウ は必要なのか……☆?
まず、取る駒を フィンガーチィ升 に入れる☆
フィンガーチィ升で 駒を 180°回転 させる符号は マイナス にした☆
めんどくさ……
駒台は スタックになっている☆ ゼロから始まるアルファベット で指定しろだぜ☆
このとき
先後付き駒
Piece
を指定する必要があるぜ☆
使わない駒を置く場所もある☆
UTF-8 エンコーディングなら、英字と 半角カナを 同時に使える☆
銀はシルバー☆
駒の種類を止めて 全部 数 にできないの?
駒台に 駐車場のように 番号 を付けて使うのは、駒を探すときの スキャンの実行時間がかかるので
駒の種類を指定して ぱっと 使えるようにした☆
よいしょっ☆
プラス記号で裏返すぜ☆
成り込めたな☆ もう大変☆
最後に タテボウ を忘れるなだぜ☆
人間が使う棋譜じゃないわよね
| 77 76 | | 33 34 | | 22 - 0B 88 + 22 |
という棋譜になるんだが、これは逆再生できる☆
逆再生の1発目は タテボウ だが、
盤面に変化はない☆
22 で 馬が指先に戻る☆
めんどくさいので あとは省略する☆
リバーシブルだな☆
JSAだって、 CSAだって、 USI だって リバーシブルじゃない。
そこらへんの どの棋譜アプリでも 1手戻すボタンがあるわよ
その3つの符号は コンピューターが 取った駒などを覚えているから 逆再生できるわけで、
終局図から 人間に 逆順で1手ずつ 棋譜を伝えても 逆再生できないはずだぜ☆
逆再生したいやつなんか いないからな☆
わたしの RPM符号 は、
人間でも逆再生できる
☆
手間が多くて いやだが……☆
そして、 RPM符号 にだけ できる特長として、
1手戻す という操作も 1本の棋譜に記録できる
☆
というのも、RPM符号 は 指すのも、戻すのも、違いがない☆
ゲームツリーを上ったり下りたりするなら 変化なんか忘れてしまわないと、
記憶が 宇宙の原子の数 を超えてしまうぜ☆?
全部の変化を見るから 宇宙の原子の数 を超えてしまう☆
有力な変化だけを検討するのは、大盤解説では ふつうに やってるだろ☆
コンピューター将棋ソフトにも その表現力を与える☆
与えて どうすんの?
投了図を与えると、どんな局面だったか 戻していく という勘が付く☆
付くのかなぁ?
現局面から指していく評価関数と、起こり得そうな投了図から逆順で指していく評価関数の2つを作って、
時間軸を挟み撃ちにするというのが リバーシブルの骨子 だぜ☆
探索と、詰めルーチンを 同じアルゴリズムで 一石二鳥するの?
時間軸を 行ったり来たり すれば かしこくなる はずだぜ☆
理屈としては、水平線効果 に対して なんらかの対処方法を与えたい☆
できんのか☆?
考え中☆
戻る - back
4. 使用例 WCSC28_F6_PAL_HFW.csa☆
- Example of use ☆. WCSC28_F6_PAL_HFW.csa ☆.
細かい仕様は おいておいて、使ってみた例を紹介しよう☆
去年の 優勝ソフトと、準優勝ソフトが 決勝で当たったときの
棋譜
だぜ☆
棋譜を並べることは 任せろだぜ☆!
77 76 [2] 83 84 [3] 27 26 [4] 84 85 [5] 88 77 [6] 33 34 [7] 79 78 [8] 41 32 [9] 26 25 [10] 71 72 [11] 67 66 [12] 22 33 [13] 49 58 [14] 73 74 [15] 39 48 [16] 31 22 [17] 37 36 [18] 72 73 [19] 78 67 [20] 33 42 [21] 57 56 [22] 53 54 [23] 69 78 [24] 51 41 [25] 77 68 [26] 22 33 [27] 59 69 [28] 41 31 [29] 78 77 [30] 73 84 [31] 69 78 [32] 81 73 [33] 48 37 [34] 43 44 [35] 37 26 [36] 61 52 [37] 36 35 [38] 52 43 [39] 34 - 0P 35 34 [40] 34 - 0p 33 34 [41] 17 16 [42] 85 86 [43] 86 - 0P 87 86 [44] 84 95 [45] 76 75 [46] 75 - 0p 42 75 [47] 68 46 [48] 95 84 [49] 28 38 [50] 75 53 [51] 86 85 [52] 44 45 [53] 46 28 [54] 26 - 0s 53 26 [55] 84 - 0S 85 84 [56] 0p 37 [57] 37 - 0P 38 37 [58] 37 - 0r 26 + 37 [59] 37 + - 0B 28 37 [60] 84 - 0p 82 84 [61] 0P 86 [62] 45 46 [63] 46 - 0P 37 46 [64] 73 85 [65] 77 76 [66] 0r 39 [67] 0S 59 [68] 0p 88 [69] 85 - 0N 86 85 [70] 84 81 [71] 46 + 73 [72] 89 - 0n 88 + 89 [73] 63 - 0P 73 63 [74] 74 75 [75] 76 86 [76] 0s 57 [77] 0N 69 [78] 81 61 [79] 63 52 [80] 58 - 0g 57 + 58 [81] 58 + - 0S 59 58 [82] 0g 62 [83] 61 - 0R 52 61 [84] 61 + - 0b 62 61 [85] 0R 81 [86] 0n 71 [87] 91 - 0L 81 + 91 [88] 29 - 0n 39 + 29 [89] 78 87 [90] 0n 94 [91] 0B 64 [92] 31 22 [93] 91 92 [94] 0b 68 [95] 0P 77 [96] 89 88 [97] 88 + - 0P 87 88 [98] 86 - 0g 94 86 [99] 0L 46 [100] 0p 45 [101] 0P 35 [102] 0g 42 [103] 34 - 0S 35 34 [104] 46 - 0l 45 46 [105] 0S 44 [106] 0l 62 [107] 43 - 0G 44 43 [108] 43 - 0s 42 43 [109] 0S 41 [110] 0s 42 [111] 46 - 0P 64 46 [112] 68 + 59 [113] 88 87 [114] 32 31 [115] 86 - 0N 87 86 [116] 41 - 0s 31 41 [117] 93 - 0P 92 93 [118] 41 32 [119] 25 24 [120] 34 - 0p 43 34 [121] 85 84 [122] 66 - 0p 62 66 [123] 0P 33 [124] 33 - 0p 34 33 [125] 23 - 0P 24 + 23 [126] 23 + - 0p 33 23 [127] 0P 24 [128] 24 - 0p 23 24 [129] 84 + 83 [130] 67 - 0s 66 + 67 [131] 67 + - 0L 58 67 [132] 69 - 0n 59 69 [133] 0L 28 [134] 0p 25 [135] 24 - 0G 46 24 [136] 28 - 0l 29 28 [137] 0N 58 [138] 28 38 [139] 0P 23 [140] 23 - 0p 22 23 [141] 24 46 [142] 0p 45 [143] 0P 24 [144] 23 22 [145] 93 92 [146] 0p 62 [147] 46 + 82 [148] 69 68 [149] 0G 78 [150] 24 - 0p 68 24 [151] 0P 84 [152] 38 33 [153] 0P 63 [154] 63 - 0p 33 63 [155] 83 73 [156] 63 33 [157] 58 66 [158] 0p 93 [159] 0G 85 [160] 24 57 [161] 84 + 83 [162] 0l 64 [163] 93 - 0P 82 93 [164] 66 - 0n 64 66 [165] 66 - 0L 67 66 [166] 66 - 0s 57 66 [167] 0P 35 [168] 35 - 0p 33 35 [169] 62 - 0P 73 62 [170] 83 + - 0p 71 83 [171] 0P 23 [172] 23 - 0p 22 23 [173] 83 - 0N 93 83 [174] 0p 84 [175] 84 - 0P 85 84 [176] 75 76 [177] 0N 75 [178] 45 46 [179] 76 - 0P 77 76 [180] 0s 65 [181] 78 87 [182] 76 - 0p 65 76 [183] 76 - 0S 87 76 [184] 0s 77 [185] 86 95 [186] 76 - 0g 66 76 [187] 0S 85 [188] 75 - 0n 35 75 [189] 95 94 [190] 0g 95 [191] 94 93 [192] 85 - 0s 95 85 [193] 84 74 [194] 62 + - 0p 61 62 [195] 0L 39 [196] 0p 35 [197] 93 82 [198] 0s 73 [199] 73 - 0S 83 73 [200] 73 + - 0b 62 73 [201] 75 + - 0R 74 75 [202] 75 - 0g 76 75 [203] 82 91 [204] 75 74 [205] 0S 93 [206] 92 + - 0r 74 92 [207] 92 + - 0B 93 + 92 [208] 0r 51 [209] 0B 81 [210] 0s 83 [211] 0P 82 [212] 92 + - 0s 83 92 [213] 0P 24 [214] 23 34 [215] 35 - 0P 39 35 [216] 35 - 0l 34 35 [217] 0R 65 [218] 0n 45 [219] 65 + 62 [220] 92 83 [221] 51 - 0R 62 51 [222] 51 + - 0r 42 51 [223] 0P 36 [224] 24 - 0p 35 24 [225] 81 + 92 [226] 92 + - 0b 83 92 [227] 82 + 81 [228] 81 + - 0p 92 81 [229] 0R 44 [230] 24 33 [231] 44 34 [232] 34 - 0r 33 34 [233] 36 35 [234] 34 23 [235] 81 - 0S 91 81 [236] 0s 72 [237] 81 92 [238] 0g 81 [239] 92 93 [240] 73 83 [241]
…………
…………☆
…………☆
一応、
f で 1個進む、 ff で 1手進む、 fff で 10手進む、 ffff で 400手進む、
b で 1個戻る、 bb で 1手戻る、 bbb で 10手戻る、 bbbb で 400手戻る、
d で 1個消す、 bb で 1手消す、 bbb で 10手消す、 bbbb で 400手消す、
ぐらいの機能はある☆ 400 というのは 全部進めるぐらいの意味だぜ☆
戻る - back
5. 使用例 WCSC_F2_QHA_TNK.csa☆
- Example of use ☆. WCSC_F2_QHA_TNK.csa ☆.
カパックと タヌキも 見てみようぜ☆
77 76 [2] 33 34 [3] 27 26 [4] 83 84 [5] 26 25 [6] 41 32 [7] 69 78 [8] 31 42 [9] 22 - 0B 88 + 22 [10] 22 + - 0b 32 22 [11] 79 88 [12] 42 33 [13] 39 38 [14] 71 62 [15] 37 36 [16] 63 64 [17] 59 68 [18] 51 42 [19] 38 37 [20] 62 63 [21] 37 46 [22] 43 44 [23] 36 35 [24] 63 54 [25] 49 38 [26] 61 52 [27] 34 - 0P 35 34 [28] 34 - 0p 33 34 [29] 25 24 [30] 24 - 0p 23 24 [31] 24 - 0P 28 24 [32] 22 23 [33] 24 28 [34] 0p 24 [35] 0P 22 [36] 22 - 0p 23 22 [37] 24 - 0P 28 24 [38] 22 23 [39] 24 28 [40] 0p 24 [41] 0P 35 [42] 34 43 [43] 46 37 [44] 21 33 [45] 37 36 [46] 54 45 [47] 45 - 0S 36 45 [48] 45 - 0s 33 45 [49] 0S 48 [50] 84 85 [51] 47 46 [52] 0p 37 [53] 37 - 0P 29 37 [54] 57 - 0p 45 + 57 [55] 57 + - 0N 48 57 [56] 0p 36 [57] 88 77 [58] 37 - 0n 36 + 37 [59] 37 + - 0P 38 37 [60] 0b 39 [61] 28 38 [62] 0s 59 [63] 68 58 [64] 0n 65 [65] 39 - 0B 38 39 [66] 57 - 0s 65 + 57 [67] 57 + - 0N 58 57 [68] 0s 48 [69] 57 58 [70] 39 - 0r 48 39 [71] 59 - 0S 58 59 [72] 0r 57 [73] 59 68 [74] 37 - 0g 57 + 37 [75] 68 79 [76] 85 86 [77] 86 - 0P 87 86 [78] 35 - 0p 37 35 [79] 79 88 [80] 0p 85 [81] 85 - 0P 86 85 [82] 39 48 [83] 97 96 [84] 48 + 57 [85] 0S 87 [86] 46 - 0p 35 46 [87] 0P 54 [88] 54 - 0p 53 54 [89] 0P 53 [90] 53 - 0p 52 53 [91] 0P 25 [92] 0p 86 [93] 86 - 0P 87 86 [94] 42 33 [95] 0P 58 [96] 57 47 [97] 0B 31 [98] 53 63 [99] 0N 75 [100] 82 32 [101] 0B 42 [102] 42 - 0b 32 42 [103] 42 - 0R 31 + 42 [104] 42 + - 0b 33 42 [105] 63 - 0G 75 + 63 [106] 42 33 [107] 63 53 [108] 43 32 [109] 0R 31 [110] 46 37 [111] 0P 48 [112] 0g 21 [113] 81 - 0N 31 + 81 [114] 48 - 0p 47 48 [115] 91 - 0L 81 91 [116] 25 - 0p 24 25 [117] 0N 15 [118] 23 24 [119] 0N 16 [120] 0b 27 [121] 53 42 [122] 24 35 [123] 32 - 0S 42 32 [124] 33 34 [125] 21 - 0G 91 21 [126] 34 45 [127] 0G 29 [128] 0b 39 [129] 21 24 [130] 45 36 [131] 39 - 0B 29 39 [132] 39 - 0g 48 39 [133] 0B 57 [134] 0p 34 [135] 0S 48 [136] 0g 38 [137] 39 + - 0S 48 39 [138] 39 - 0s 38 39 [139] 0S 48 [140] 27 + 38 [141] 37 + - 0R 48 37 [142] 37 - 0s 38 37 [143] 39 - 0G 57 39 [144] 0s 38 [145] 93 - 0P 39 + 93 [146] 0p 87 [147] 87 - 0P 88 87 [148] 19 - 0l 37 19 [149] 0L 39 [150] 36 27 [151] 38 - 0S 39 38 [152] 27 18 [153] 35 - 0G 38 35 [154] 0s 37 [155] 0G 39 [156] 0l 27 [157] 25 - 0P 24 25 [158] 0p 26 [159] 0G 36 [160] 0p 84 [161] 26 - 0P 36 26 [162] 26 - 0g 37 + 26 [163] 26 + - 0S 25 26 [164] 0g 28 [165] 0S 36 [166] 19 29 [167] 27 - 0L 36 27 [168] 27 - 0s 28 27 [169] 29 + - 0B 39 29 [170] 29 - 0g 18 29 [171] 27 - 0G 26 27 [172] 0g 28 [173] 0S 38 [174] 29 19 [175] 0G 29 [176] 29 - 0g 28 29 [177] 29 - 0G 27 29 [178]
…………
…………☆
…………☆
わたしたちが 棋譜を眺めても なんにも分かんないのよ!