何よこれ、ずばり解説☆ position sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL w - 1 moves 7g7f
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

何よこれ、ずばり解説☆ position sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL w - 1 moves 7g7f

2015-05-20 19:45

    コンピュータ将棋エンジンを作り始めるような人は、
    だいたい 次のような目的があるんじゃないだろうか☆

        (1)電王戦のPVに出たい
        (2)世界コンピュータ将棋選手権で優勝して最強になりたい
        (3)名人と戦いたい
        (4)フラッドゲートに放流したい
        (5)その他

    とりあえず『将棋所』(しょうぎどころ)という画面ソフト(GUI)を利用するように
    将棋エンジンを作っておくと、(1)、(2)、(4)は狙えるので オススメなんだぜ☆




    コンピュータ将棋エンジンを作り始めると、最初の3ヶ月の間に、
    だいたい 2つのコースを選ぶことになるぜ☆

      コースA ──────────→ USIプロトコル
      コースB ──────────→ CSAプロトコル

    どっちに行けばいいんだぜ☆? というところなんだが、
    コースAに行くと、将棋所が使える☆

    USIを使うとしよう☆

    ぶっちゃけ USI で難しい壁は、2箇所なんだぜ☆

    ponder(ポンダー)と、  これ
                    ↓

    position sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL w - 1 moves 7g7f

    ponderはやらないという選択肢があるんだが、↑あれ は必要なんだぜ☆




    あの長い文字列。よく見ると、次のような形をしているんだぜ☆

        position ~なんたら1~ moves ~なんたら2~ 改行


    ~なんたら1~ には、2つのパターンがあるんだぜ☆

    (1)position startpos moves

    (2)position sfen lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL w - 1 moves


    (1)が飛んできたら、 平手初期局面 にしたらいいんだぜ☆
    (2)が飛んできたら、 局面     を作成するんだぜ☆


    局面 ってのは、「駒の配置」、「次の手番」、「持ち駒」、「次の手が何手目か」
    の4つだぜ☆

      sfen 略/略/略/略/略/略/略/略/略 w - 1

    なら、次の手番は w(最初に指す方の反対側プレイヤーという記号)で、
    持ち駒は両者無し、次の手は1手目、なんだぜ☆
    謎の記号の書き方については後で説明する予定☆


    ~なんたら2~ は、初手からの棋譜だぜ☆

      7g7f 3c3d 6g6f 4c4f

    と進んでいくんだが、

      プレイヤー1プレイヤー2プレイヤー1プレイヤー2

    と、指し手が交互に並んでいるんだぜ☆
    謎の記号の読み方については後で説明する予定☆


    この長い文字列は、

      どこかの局面の1手目から符号が載っている

    というデータになっているわけだな☆



    ここで、頭がすっきりする話を 1つ しておこう☆


    USIの元ネタは チェスのUCI なんだぜ☆wwww
    「SFENって何なんだぜ☆ なんだこの変な書き方は」と思うたびに
    「ああ、元ネタはチェスのUCIで、将棋用にアレンジしたんだろうな」と
    思うようにすると 精神的に 健康になるんだぜ☆www

    暗号に見える文字も、チェスの駒と思うと、
    元ネタでは チェスの盤そのまんま なんだぜ☆

    pは後手のポーン、Rは先手のルック☆ww
    漢字に大文字/小文字がなくて残念だったな☆www

    a1 は a列1段目☆www
        参考: チェス入門 棋譜の読み方
    7七 じゃなくて 7g ☆wwww 漢数字じゃなくて残念だったな☆www


    将棋指しには 暗号に見える☆wwwwww



    では、チェスと比較しながら SFEN を解説しよう☆www

          チェス                  将棋
    ━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━
    最初に指す方が     白(w) 将棋盤の下が 黒(*) 平手(先手)/駒落ち下手(後手)
    最初に指す方の反対側が 黒(b) 将棋盤の上が 白(*) 平手(後手)/駒落ち上手(先手)

                        (*)ただし☆! ↓

                            コンピュータ将棋
                     ━━━━━━━━━━━━━━━━━━━━━━━━
                     最初に指す方が     黒(b)
                     最初に指す方の反対側が 白(w)

    になるんだぜ☆

      「基本的に チェスで、 将棋に合わせて 黒白だけ ひっくり返したんだ☆
       なるほど、ぽろ~☆(/_\)」

    と考えれば、頭が すっきり したな☆wwwwwwwww


      sfen 略/略/略/略/略/略/略/略/略 w - 1

    次の手番が b か、 w か、これは分かるようになったな☆ww





    次に。

      sfen 略/略/略/略/略/略/略/略/略 w - 1

    これは -1 ではなくて、 1 なんだぜ☆ そして 1 固定なんだぜ☆

    何を言っているか分からないかもしれないんだが、 1 固定なんだぜ☆

    将棋所の説明文に
    「将棋所の場合、この数字は必ず1にしています。」と記されているんだから、
    将棋所を使うんなら 1 固定でいいんだぜ☆




    さらに次は☆

      sfen 略/略/略/略/略/略/略/略/略 w - 1

    これは、 左端のが 将棋盤の1段目 で、右端のが 将棋盤の9段目 なんだぜ☆
    だから
       /
    の棒の数は 8本あるんだぜ☆
    じゃがりこを舐めた指で数えてみるといいんだぜ☆ 8本あるな☆
    間に棒が8本あれば、段は9つあるんだぜ☆

    では謎の記号の見方を一覧するぜ☆

          チェス                  将棋
    ━━━━━━━━━━━━━━━   ━━━━━━━━━━━━━━━━━━━━━━━━
    P ポーン  (pawn)     P ポーン   歩   (pawn)
    N ナイト  (knight)   L ランス   やり、香(lance)
    B ビショップ(bishop)   N ナイト   桂馬  (knight)
    R ルック  (rook)     S シルバー  銀   (silver)
    Q クイーン (queen)    G ゴールド  金   (gold)
    K キング  (king)     K キング   王   (king)
                      R ルック   飛   (rook)
                      B ビショップ 角   (bishop)

    左端が謎の記号なんだぜ☆
    これは うまく 当てはまっているんだぜ☆
    そして 最初に指す方が 大文字、 最初に指す方の反対側が 小文字 なんだぜ☆


          チェス                  将棋
    ━━━━━━━━━━━━━━━   ━━━━━━━━━━━━━━━━━━━━━━━━
    p ポーン  (pawn)     p ポーン   歩   (pawn)
    n ナイト  (knight)   l ランス   やり、香(lance)
    b ビショップ(bishop)   n ナイト   桂馬  (knight)
    r ルック  (rook)     s シルバー  銀   (silver)
    q クイーン (queen)    g ゴールド  金   (gold)
    k キング  (king)     k キング   王   (king)
                      r ルック   飛   (rook)
                      b ビショップ 角   (bishop)


    目が見慣れてきたかなんだぜ☆wwwwww

        「飛車が r ☆? フンガー☆!」

    だったのが、

        「ルック、あ☆ 分かる分かる」

    ぐらいには 謎が解けたかなんだぜ☆?www

    コンピュータ将棋を作っている最中のヒマに チェスの棋譜を 1つ2つ ちょっと
    眺めておくと、塩を振ったおにぎりのように 食べやすくなるぜ☆wwwwww


    次に、 成り駒 はどうするのかなんだぜ☆?

          チェス                  将棋
    ━━━━━━━━━━━━━━━   ━━━━━━━━━━━━━━━━━━━━━━━━
                      +P ポーン   先手 と金 (pawn)
         チェスに         +L ランス   先手 成香 (lance)
         成り駒など        +N ナイト   先手 成桂 (knight)
         ない☆!!        +S シルバー  先手 成銀 (silver)
                      +R ルック   先手 龍  (rook)
                      +B ビショップ 先手 馬  (bishop)
                      
                      +p ポーン   後手 と金 (pawn)
                      +l ランス   後手 成香 (lance)
                      +n ナイト   後手 成桂 (knight)
                      +s シルバー  後手 成銀 (silver)
                      +r ルック   後手 龍  (rook)
                      +b ビショップ 後手 馬  (bishop)

    プラスのピーは、プロモートのピー とダジャレで覚えておくといいんじゃないか☆www
    USIを考えた人、チェスに無くて将棋に有るような 困ったルールが出てきたときは
    まず + を使いまわして、
    それでも足りないときは * を使いまわして 頑張ったように
    わたしには見えたんだぜ☆wwww


    そして、空きマスは、連続している数を入れるんだぜ☆

      ┌─┬─┬─┬─┬─┬─┬─┬─┬─┐
      │歩│ │ │ │ │ │ │ │ │
      └─┴─┴─┴─┴─┴─┴─┴─┴─┘

    なら P8 だぜ☆ 書き方は1段毎に完結する☆

      ┌─┬─┬─┬─┬─┬─┬─┬─┬─┐
      │ │ │ │ │ │ │ │ │ │
      └─┴─┴─┴─┴─┴─┴─┴─┴─┘

    なら 9 だぜ☆

      ┌─┬─┬─┬─┬─┬─┬─┬─┬─┐
      │香│桂│銀│ │ │金│銀│桂│ │
      └─┴─┴─┴─┴─┴─┴─┴─┴─┘

    なら LNS2GSN1 だぜ☆

      ┌─┬─┬─┬─┬─┬─┬─┬─┬─┐
      │ │桂│ │金│ │金│ │桂│ │
      └─┴─┴─┴─┴─┴─┴─┴─┴─┘

    なら 1N1G1G1N1 だな☆ww

    空きマスには 特別なルールはないんだぜ☆



    さて、

      lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL

    を見て、読めるようになってきただろうかなんだぜ☆?
    盤上に駒が無い場合は

      9/9/9/9/9/9/9/9/9

    になるんだぜ☆

    小説を読むように、将棋盤の左上から右上へ、1段下がって左端から右端へ、と、
    カウンターを進めながら 駒を置いていけばいいな☆




    そして次は☆

      sfen 略/略/略/略/略/略/略/略/略 w - 1

    このハイフンなんだが、持ち駒があると 例えば、 次のように書くんだぜ☆

      sfen 9/9/9/9/9/9/9/9/9 w KRB2G2S2N2L9Pkrb2g2s2n2l9p 1

      「2枚以上のときは、その枚数」「駒の種類」

    で1セットなんだぜ☆ 先手が歩を18枚持っていれば、

      18P

    になるんだぜ☆

    日本語なら「ハンバーガー2個ください」と言うが、
    英語 なら「ツー ハンバーガーズ, プリーズ」と言うな☆www
    これから 「持ち駒は ツー銀ズ、ファイブ歩ゥズ」とか言おうぜ☆wwwwww

    先手が歩を1枚持っているときは、1は書かずに

      P

    と書くんだぜ☆
    英語で  「ワン ハンバーガーズ, プリーズ」とか言わないな☆wwwww
    日本語なら「いくつですか?」「1個なんだぜ☆!」と言うかも知れないが☆wwww

    わたしは、持ち駒の書き方は

      K → R → B → G → S → N → L → P → k → r → b → g → s → n → l → p

    の順に並んでいる、と決め付けて実装したんだが、将棋所を使っていて いまのところ
    問題はないぜ☆ もしかするとバグになるかもしれない☆ww

    それに 王が持ち駒になっていることがあるんだろうか☆ww変だぜ☆ww
    わたしは実装している☆ww

    なお、持ち駒に成り駒はない☆ww




    では、この長い文字列を読めるだろうか☆

    8l/1l+R2P3/p2pBG1pp/kps1p4/Nn1P2G2/P1P1P2PP/1PS6/1KSG3+r1/LN2+p3L w Sbgn3p 1

      参考: USI草案1 から一部改変


    わたしは、多分、考えて手動で書いたんだが、次のような将棋盤になると思うんだぜ☆

    下向き側┌──┬──┬──┬──┬──┬──┬──┬──┬──┐
        │  │  │  │  │  │  │  │  │香↓│
     角  ├──┼──┼──┼──┼──┼──┼──┼──┼──┤
     金  │  │香↓│龍 │  │  │歩 │  │  │  │
     桂  ├──┼──┼──┼──┼──┼──┼──┼──┼──┤
     歩3 │歩↓│  │  │歩↓│角 │金 │  │歩↓│歩↓│
        ├──┼──┼──┼──┼──┼──┼──┼──┼──┤
        │王↓│歩↓│銀↓│  │歩↓│  │  │  │  │
        ├──┼──┼──┼──┼──┼──┼──┼──┼──┤
        │桂 │桂↓│  │歩 │  │  │金 │  │  │
        ├──┼──┼──┼──┼──┼──┼──┼──┼──┤
        │歩 │  │歩 │  │歩 │  │  │歩 │歩 │
        ├──┼──┼──┼──┼──┼──┼──┼──┼──┤
        │  │歩 │銀 │  │  │  │  │  │  │
        ├──┼──┼──┼──┼──┼──┼──┼──┼──┤
        │  │王 │銀 │金 │  │  │  │馬↓│  │
        ├──┼──┼──┼──┼──┼──┼──┼──┼──┤ 銀
        │香 │桂 │  │  │と↓│  │  │  │香 │
        └──┴──┴──┴──┴──┴──┴──┴──┴──┘上向き側

    次は 下向き側 の手番☆

    こういった情報なんだぜ☆ どうだろうか☆?




    これで残るは

        position ~なんたら1~ moves ~なんたら2~ 改行

    なんだぜ☆ ここには棋譜の符号が入る☆

    では、 盤の見方 を比べてみるんだぜ☆ww

            チェス                 将棋
    ━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━
                         9 8 7 6 5 4 3 2 1
                        ┌─┬─┬─┬─┬─┬─┬─┬─┬─┐
                        │ │ │ │ │ │ │ │ │ │一
     ┌─┬─┬─┬─┬─┬─┬─┬─┐  ├─┼─┼─┼─┼─┼─┼─┼─┼─┤
    8│ │ │ │ │ │ │ │ │  │ │ │ │ │ │ │ │ │ │二
     ├─┼─┼─┼─┼─┼─┼─┼─┤  ├─┼─┼─┼─┼─┼─┼─┼─┼─┤
    7│ │ │ │ │ │ │ │ │  │ │ │ │ │ │ │ │ │ │三
     ├─┼─┼─┼─┼─┼─┼─┼─┤  ├─┼─┼─╋─┼─┼──┼─┼─┤
    6│ │ │ │ │ │ │ │ │  │ │ │ │ │ │ │ │ │ │四
     ├─┼─┼─┼─┼─┼─┼─┼─┤  ├─┼─┼─┼─┼─┼─┼─┼─┼─┤
    5│ │ │ │ │ │ │ │ │  │ │ │ │ │ │ │ │ │ │五
     ├─┼─┼─┼─┼─┼─┼─┼─┤  ├─┼─┼─┼─┼─┼─┼─┼─┼─┤
    4│ │ │ │ │ │ │ │ │  │ │ │ │ │ │ │ │ │ │六
     ├─┼─┼─┼─┼─┼─┼─┼─┤  ├─┼─┼──┼─┼──┼─┼─┤
    3│ │ │ │ │ │ │ │ │  │ │ │ │ │ │ │ │ │ │七
     ├─┼─┼─┼─┼─┼─┼─┼─┤  ├─┼─┼─┼─┼─┼─┼─┼─┼─┤
    2│ │ │ │ │ │ │ │ │  │ │ │ │ │ │ │ │ │ │八
     ├─┼─┼─┼─┼─┼─┼─┼─┤  ├─┼─┼─┼─┼─┼─┼─┼─┼─┤
    1│ │ │ │ │ │ │ │ │  │ │ │ │ │ │ │ │ │ │九
     └─┴─┴─┴─┴─┴─┴─┴─┘  └─┴─┴─┴─┴─┴─┴─┴─┴─┘
      a b c d e f g h

                              ↓ しかし☆

        コンピュータ・チェス           コンピュータ・将棋
    ━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━
                         9 8 7 6 5 4 3 2 1
                        ┌─┬─┬─┬─┬─┬─┬─┬─┬─┐
                        │ │ │ │ │ │ │ │ │ │a
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │ │ │ │ │ │ │ │ │ │b
           チェスと         ├─┼─┼─┼─┼─┼─┼─┼─┼─┤
          同じほっほー☆       │ │ │ │ │ │ │ │ │ │c
          (^▽^)         ├─┼─┼──┼─┼──┼─┼─┤
                        │ │ │ │ │ │ │ │ │ │d
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │ │ │ │ │ │ │ │ │ │e
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │ │ │ │ │ │ │ │ │ │f
                        ├─┼─┼──┼─┼──┼─┼─┤
                        │ │ │ │ │ │ │ │ │ │g
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │ │ │ │ │ │ │ │ │ │h
                        ├─┼─┼─┼─┼─┼─┼─┼─┼─┤
                        │ │ │ │ │ │ │ │ │ │i
                        └─┴─┴─┴─┴─┴─┴─┴─┴─┘
                        
    「6f…、エフゥ☆?!」

    と、最初は面喰らうんだが、簡単に覚える方法を紹介するんだぜ☆




        アルファベットで段を覚える歌
        ======  作詞・むずでょ

        ♪CDをフライングゲット☆

         盤を挟んで両端に AI☆

         真ん中で立会人は イー顔☆
       
         あなた ビールで☆ わたし ハイボール☆


    将棋盤には4つの星があるな☆
    CD(cd)をフライングゲット(fg)する場所はそこなんだぜ☆

    盤の端っこは(ai)だし、 真ん中は(e)☆

    相手はビール(b)で、わたしはハイボール(h)なんだぜ☆



    符号で f が出てきたら、はい フライングゲットするんだぜ☆ww
    7g とか、 7f とか書かれていても すぐには頭の中に思い浮かべられないので、
    暗号みたいな文字列さえ読めれば良しとするんだぜ☆

      7g7f

    という4桁の符号が出てきたとき、これは「7g から 7f へ動く」と読むんだぜ☆
    歩なのか、銀なのか、何が動いたのかは書いていないんだぜ☆


    慣れただろうか☆wwwwww

           チェス                    将棋
    ━━━━━━━━━━━━━━━━━━    ━━━━━━━━━━━━━━━━━━━
      1. e4 e6                 1. 7六歩
                             2. 3四歩 
      2. d4 d5                 3. 6六歩 
                             4. 3二金
     

        コンピュータ・チェス             コンピュータ将棋
    ━━━━━━━━━━━━━━━━━━    ━━━━━━━━━━━━━━━━━━━
      position startpos moves e2e4        position startpos moves 7g7f
       e7e6 d2d4 d7d5               3c3d 6g6f 4a3b




    わたしには 人間の棋譜は どうしろ、進め進め、と 命令 になっているように
    見えるんだが、
    時間は過去から未来へ一方的に進み、戻れない時間を今生きている動物のような感じが
    するぜ☆www

    コンピューターの棋譜は どの場所の何かの駒が どの場所に動いたのか
    起こったできごとの マスの番号の記録 になっているんだぜ☆ww
    わたしには まるで未来人が 過去の記録に当たっているかのような感じがするぜ☆ww


    なんだか わたしには 人間の棋譜が 動詞(+名詞)のように言語の形に見えるし、
    コンピューターの棋譜は 名詞の羅列のデータに見えるんだぜ☆wwwwww


    コンピュータ・チェスは アルファベット・数字 の順で、
    コンピュータ将棋  は 数字・アルファベット の順なんだが、
    どちらも 筋・段 の順でマスが記されているという点は同じなんだぜ☆



    マス だけ棋譜に残しても 足りないんだぜ☆

    まだ、「成り」なのか、「打」なのか、 アクション の記録も必要だな☆


    駒が成るときは、うしろに「+」記号を付けるんだぜ☆

           将棋                   コンピュータ将棋
    ━━━━━━━━━━━━━━━━━━    ━━━━━━━━━━━━━━━━━━━
          2三歩成                    2d2c+


    駒を打ったときは、
    打った駒の種類を大文字で書いて「*」記号を付け、打ち込んだマスを書くんだぜ☆

           将棋                   コンピュータ将棋
    ━━━━━━━━━━━━━━━━━━    ━━━━━━━━━━━━━━━━━━━
          5五銀打                    S*5e
          5五銀 (※)

       ※「打」と分かる場合は
        「打」を省くんだぜ☆



    これで、あの長い文字列の仕組みは 全部説明したと思うんだが
    どうだろうかなんだぜ☆?



    その他の話題☆

    この 長い文字列、取った駒を記録していない んだぜ☆
    「待った」(棋譜の巻き戻し)をしたいときに、
    取られた駒が元に戻ってなくて 困るんだぜ☆

    棋譜の巻き戻し機能 を付けたい場合は、
    駒を取るたびに 何らかの方法で パソコンの中に覚えておく必要があるな☆ww




    とりあえず ひとまず書き上げなんだぜ☆
    分からないところがあれば 質問が出るだろうから それを拾っていく予定なんだぜ☆

    あと、今(2015年5月21日現在)無職なので仕事くれ☆wwwww

    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。