Skip to content

Instantly share code, notes, and snippets.

@mizar
Last active March 6, 2022 03:15
Show Gist options
  • Save mizar/22a59bef47dde8b08d90dceb45b96f20 to your computer and use it in GitHub Desktop.
Save mizar/22a59bef47dde8b08d90dceb45b96f20 to your computer and use it in GitHub Desktop.
将棋の棋譜表記方法(伝統形式)

将棋の棋譜表記方法(伝統形式)

全体

graph LR;
flowstart((start)) --> A((基本<br>start)) --> At{手番の記号を出力するか} --> |手番の記号なし| Atn["手番の記号を出力しない"] --> As{直前の相手の駒の到達地点と<br>同じ地点か} --> A1[/"到達地点の筋を出力<br>算用数字"/] --> A2[/"到達地点の段を出力<br>新聞・本・雑誌などでは漢数字<br>日本将棋連盟の棋譜記録では算用数字"/] --> A3[/"駒の種類を出力"/] --> Az((基本<br>end)) --> B{持ち駒を打つ<br>置き駒を動かす};
At --> |先手番を明記| Atb[/"先手番の記号を出力<br>例:「☗」「⛊」「▲」「▼」"/] --> As;
At --> |後手番を明記| Atw[/"後手番の記号を出力<br>例:「☖」「⛉」「△」「▽」"/] --> As;
As --> |同じ| As0[/"「同」を出力<br>新聞・本などでは改頁などの都合で<br>「7六同歩」のような表記をする場合あり"/] --> A3;
subgraph base[基本];A;At;Atn;Atb;Atw;As;As0;A1;A2;A3;Az;end;
B --> |持ち駒を打つ| C((駒打ち<br>start)) --> Ca{打つ駒と<br>同じ種類の置き駒が<br>到達可能か} --> |到達可能な置き駒なし| C0["打の出力なし"] --> Cz((駒打ち<br>end));
Ca --> |到達可能な置き駒あり| C1[/"「打」を出力"/] --> Cz;
subgraph drop[駒打ち];C;Ca;C0;C1;Cz;end;
B --> |置き駒を動かす| D(("動作・相対位置<br>start")) --> Ds{動かす駒と<br>同じ種類の置き駒が<br>複数到達可能か} --> |動かす駒のみ<br>到達できる| D0["動作・相対位置の出力なし"] --> Dz(("動作・相対位置<br>end"));
Ds --> |置き駒が複数到達可能| E{"「引」<br>「寄」<br>「上」"} --> E1[/"「引」を出力"/] & E2[/"「寄」を出力"/] & E3[/"「上」を出力"/] --> Dz;
E --> |特定できない| F{"駒の種類"};
F --> |"桂・角・馬・飛・龍"| Fa{"「左」「右」"} --> F1[/"「左」を出力"/] & F2[/"「右」を出力"/];
F --> |"銀・金・と金・成香・成桂・成銀"| Fb{"「左」「直︁」「右」"} --> F1 & F2 & F0[/"「直︁」を出力"/] --> Dz;
F --> |"歩・香・玉"| Fx((error));
Fb --> |特定できない| G{"「左引」「右引」<br>「左寄」「右寄」<br>「左上」「右上」"} --> G1[/"「左引」を出力"/] & G2[/"「右引」を出力"/] & G3[/"「左寄」を出力"/] & G4[/"「右寄」を出力"/] & G5[/"「左上」を出力"/] & G6[/"「右上」を出力"/] --> Dz;
G --> |特定できない| Gx((error));
subgraph ambiguous["動作・相対位置"];D;Ds;D0;Dz;E;E1;E2;E3;F;Fa;Fb;F1;F2;F0;Fx;G;G1;G2;G3;G4;G5;G6;Gx;end;
Dz --> N(("成・不成<br>start")) --> Na{"移動元・移動先"} --> |"移動元・移動先<br>ともに敵陣ではない"| N0["成・不成の出力なし"] --> Nz(("成・不成<br>end"));
Na --> |"移動元・移動先の<br>いずれかもしくは両方が敵陣"| Nb{"駒の種類"} --> |"金・玉・成駒"| N0;
Nb --> |"歩・香・桂・銀・角・飛"| Nc{"成・不成"} --> |駒を成らない| N1[/"「不成」を出力"/] --> Nz;
Nc --> |駒を成る| N2[/"「成」を出力"/] --> Nz;
subgraph promote["成・不成"];N;Na;Nb;Nc;N0;N1;N2;Nz;end;
Cz & Nz --> flowend((end));
Loading

mermaid.ink

基本

graph LR;
flowstart((start)) --> A((基本<br>start)) --> At{手番の記号を出力するか} --> |手番の記号なし| Atn["手番の記号を出力しない"] --> As{直前の相手の駒の到達地点と<br>同じ地点か} --> A1[/"到達地点の筋を出力<br>算用数字"/] --> A2[/"到達地点の段を出力<br>新聞・本・雑誌などでは漢数字<br>日本将棋連盟の棋譜記録では算用数字"/] --> A3[/"駒の種類を出力"/] --> Az((基本<br>end)) --> B{持ち駒を打つ<br>置き駒を動かす};
At --> |先手番を明記| Atb[/"先手番の記号を出力<br>例:「☗」「⛊」「▲」「▼」"/] --> As;
At --> |後手番を明記| Atw[/"後手番の記号を出力<br>例:「☖」「⛉」「△」「▽」"/] --> As;
As --> |同じ| As0[/"「同」を出力<br>新聞・本などでは改頁などの都合で<br>「7六同歩」のような表記をする場合あり"/] --> A3;
subgraph base[基本];A;At;Atn;Atb;Atw;As;As0;A1;A2;A3;Az;end;
Loading

mermaid.ink

駒打ち

graph LR;
B{持ち駒を打つ<br>置き駒を動かす} --> |持ち駒を打つ| C((駒打ち<br>start)) --> Ca{打つ駒と<br>同じ種類の置き駒が<br>到達可能か} --> |到達可能な置き駒なし| C0["打の出力なし"] --> Cz((駒打ち<br>end)) --> flowend((end));
Ca --> |到達可能な置き駒あり| C1[/"「打」を出力"/] --> Cz;
B --> |置き駒を動かす| D(("動作・相対位置<br>start"));
subgraph drop[駒打ち];C;Ca;C0;C1;Cz;end;
Loading

mermaid.ink

動作・相対位置

graph LR;
B --> |持ち駒を打つ| C((駒打ち<br>start));
B{持ち駒を打つ<br>置き駒を動かす} --> |置き駒を動かす| D(("動作・相対位置<br>start")) --> Ds{動かす駒と<br>同じ種類の置き駒が<br>複数到達可能か} --> |動かす駒のみ<br>到達できる| D0["動作・相対位置の出力なし"] --> Dz(("動作・相対位置<br>end"));
Ds --> |置き駒が複数到達可能| E{"「引」<br>「寄」<br>「上」"} --> E1[/"「引」を出力"/] & E2[/"「寄」を出力"/] & E3[/"「上」を出力"/] --> Dz --> N(("成・不成<br>start"));
E --> |特定できない| F{"駒の種類"};
F --> |"桂・角・馬・飛・龍"| Fa{"「左」「右」"} --> F1[/"「左」を出力"/] & F2[/"「右」を出力"/];
F --> |"銀・金・と金・成香・成桂・成銀"| Fb{"「左」「直︁」「右」"} --> F1 & F2 & F0[/"「直︁」を出力"/] --> Dz;
F --> |"歩・香・玉"| Fx((error));
Fb --> |特定できない| G{"「左引」「右引」<br>「左寄」「右寄」<br>「左上」「右上」"} --> G1[/"「左引」を出力"/] & G2[/"「右引」を出力"/] & G3[/"「左寄」を出力"/] & G4[/"「右寄」を出力"/] & G5[/"「左上」を出力"/] & G6[/"「右上」を出力"/] --> Dz;
G --> |特定できない| Gx((error));
subgraph ambiguous["動作・相対位置"];D;Ds;D0;Dz;E;E1;E2;E3;F;Fa;Fb;F1;F2;F0;Fx;G;G1;G2;G3;G4;G5;G6;Gx;end;
Loading

mermaid.ink

成・不成

graph LR;
Dz(("動作・相対位置<br>end")) --> N(("成・不成<br>start")) --> Na{"移動元・移動先"} --> |"移動元・移動先<br>ともに敵陣ではない"| N0["成・不成の出力なし"] --> Nz(("成・不成<br>end")) --> flowend((end));
Na --> |"移動元・移動先の<br>いずれかもしくは両方が敵陣"| Nb{"駒の種類"} --> |"金・玉・成駒"| N0;
Nb --> |"歩・香・桂・銀・角・飛"| Nc{"成・不成"} --> |駒を成らない| N1[/"「不成」を出力"/] --> Nz;
Nc --> |駒を成る| N2[/"「成」を出力"/] --> Nz;
subgraph promote["成・不成"];N;Na;Nb;Nc;N0;N1;N2;Nz;end;
Loading

mermaid.ink

付記

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment