zoukankan      html  css  js  c++  java
  • 中国象棋的着法生成:perft统计结果

    国际象棋引擎中有一个著名的perft程序,可以根据某一个盘面,递归分析可生成的着法个数,统计出其中吃子、将军、将死的个数,用这些数据来验证着法生成的正确性。

    perft的代码很简单,就是一个递归调用:

    U64 Perft(int depth)
    {
        Move move_list[256];
        int n_moves, i;
        U64 nodes = 0;
        if (depth == 0) return 1;
        n_moves = MoveGenerator::GenerateAllMoveList(*this, move_list);
        for (i = 0; i < n_moves; i++) {
            MakeMove(move_list[i]);
            nodes += Perft(depth - 1);
            UnmakeMove(move_list[i]);
        }
        return nodes;
    }

    google了中国象棋的perft结果,但没有发现一个网页。

    下表将慢慢列出我的统计结果和一些爱好者的补充结果,请广大爱好者们随时补充。

    注:这里的统计结果里包含将军判断,即某一着法生成后,如果仍处于被将军状态,则不算入着法列表中。

    1、初始局面:

    迭代深度

    着法个数

    吃子

    将军

    将死

    1

    44

     

    0

    0

    2

    1920

    期待大家提供结果

    期待大家提供结果

    期待大家提供结果

    3

    79666

    期待大家提供结果

    期待大家提供结果

    期待大家提供结果

    4

    3290240

    期待大家提供结果

    期待大家提供结果

    期待大家提供结果

    5

    133312995

         

    6

    5392831844

         

    7

    217154523878

    wangmao.li提供

         

    8

    期待大家提供结果

         

    9

    期待大家提供结果

         

    2、FEN局面:

    3akabR1/9/2n1b4/p1R1p3p/6P2/9/P1P5P/4C4/4c4/2B1KAB2 r

    迭代深度

    着法个数

    吃子

    将军

    将死

    1

    41      

    2

    792

     

     

     

    3

    33531

       

     

    4

    721197

       

     

    5

    30813077 

         

    6

     

         

    7

     

         
     

  • 相关阅读:
    RabbitMQ教程
    设置文件夹共享及所有访问权限
    一键操作IIS
    C#操作IIS服务
    【01】浅谈HTTP在WebApi开发中的运用
    Socket通信原理
    C# 通过JObject解析json对象
    MVC小知识整理
    Global.asax文件的作用
    iOS开发日记9-终端命令
  • 原文地址:https://www.cnblogs.com/speeding/p/2668272.html
Copyright © 2011-2022 走看看