<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      皮卡魚源碼導讀

      如何編譯和運行皮卡魚

      運行pikafish后輸入d命令:

      Screenshot_20251009_190900

      rook:車; knight:馬; bishop:象; advisor:士; king:將; cannon:炮; pawn:卒。紅棋用大寫字母。紅方叫白方。

      棋盤可以看作9x10的交叉點,也可看作方格(square).

      對應代碼是position.cpp里的std::ostream& operator<<(std::ostream& os, const Position& pos),不是bitboard.cpp里的pretty,后者沒人調用。

      先看types.h。enum Square : int8_t { SQ_A0 ... SQ_I9, SQUARE_NB   = 90 } NB是number的意思:…的個數。

      enum Direction : int8_t { EAST = 1, NORTH = 9, SOUTH = -NORTH } 上北下南,左西右東。

      // Initializes the position object with the given FEN string.
      Position& Position::set(const string& fenStr, StateInfo* si) {
        unsigned char      token;
        size_t             idx;
        Square             sq = SQ_A9;
        std::istringstream ss(fenStr);
        while ((ss >> token) && !isspace(token)) {
          if (isdigit(token)) sq += (token - '0') * EAST; // Advance the given number of files
          else if (token == '/')  sq += 2 * SOUTH;
          else if ((idx = PieceToChar.find(token)) != string::npos) put_piece(Piece(idx), sq);
        }
      }

      過度花哨了。* 1怎么說?stringstream包string包char*?

      Piece是棋子。File是列,rank是行,和row首字母都是r. rank有軍銜的意思,可聯想兵到底線升變。

      constexpr std::string_view PieceToChar(" RACPNBK racpnbk");

      string_view是C++17引入的輕量級字符串視圖類,定義于<string_view>中?。它提供對字符串數據的只讀訪問,僅存儲指針和長度信息。

      ① 這個函數沒必要優化。

      ② 最快的是像ctype.h那樣放在T [256]的表里,T是char好還是int好?還是自己操作位?

      Position::put_piece(Piece pc, Square s) {
        board[s] = pc;
        byTypeBB[ALL_PIECES] |= byTypeBB[type_of(pc)] |= s;
        byColorBB[color_of(pc)] |= s;
        pieceCount[pc]++;
      }

      enum Piece std::int8_t {...}
      Piece board[SQUARE_NB];

      typedef __uint128_t Bitboard;
      // 實際為using Bitboard = ...,處理Linux和Windows不同的情況。Linux下啥頭文件都不用包含。

      enum PieceType std::int8_t { ROOK, ..., PIECE_TYPE_NB = 8 }
      Bitboard byTypeBB[PIECE_TYPE_NB];

      enum Color : int8_t { WHITE, BLACK, COLOR_NB = 2 };
      Bitboard byColorBB[COLOR_NB];

      每方有7種、16個棋子。補充type_of和color_of:

      constexpr PieceType type_of(Piece pc) { return PieceType(pc & 7); }
      
      constexpr Color color_of(Piece pc) {
        assert(pc != NO_PIECE);
        return Color(pc >> 3);
      }

      與GNU chess相比:

      • 雖然我都看不懂,但感覺皮卡魚賞心悅目,可讀性強。在misc.cpp里作者提到了"Our fancy logging facility"; 也許極個別別的地方也有點fancy.
      • 搜索部分比較簡明。NNUE的online部分1000來行。
      • 速度極快的xxHash還有匯編寫的Huffman解碼可以先不看。Meta有基礎研究科學家,騰訊呢?
      • 皮卡魚(基于Stockfish)棋力強。
      • 帶數據。43M的pikafish.nnue是壓縮后,7z一點都再壓縮不動。Top CPU Contributors里有個Contributors for training data generation with >10,000,000 positions generated, as of 2023-02-16.  不是說拿1千萬個局面訓練的,是1千萬是上榜條件(157人上榜),榜首kaka是452524769438/1e8 > 4525。Contributors to Fishtest with >10,000 CPU hours, as of 2023-07-31. 榜首浮生若夢5029923 (574.2年?)。也許43M的是精簡版。

       

      posted @ 2025-10-09 20:18  華容道專家  閱讀(15)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久天天躁狠狠躁夜夜2020老熟妇| 欧美18videosex性欧美tube1080| 久久久久青草线蕉亚洲| 在线综合亚洲欧洲综合网站| 紫云| 国产精品综合在线免费看| 高清偷拍一区二区三区| 国产成人无码A区在线观| 国内熟妇人妻色在线视频| 欧美做受视频播放| 国产成人精品永久免费视频| 国产喷水1区2区3区咪咪爱av| 一区二区三区四区五区自拍| 视频二区中文字幕在线| 无遮无挡爽爽免费视频| 少妇久久久被弄到高潮| 做暖暖视频在线看片免费| 91精品91久久久久久| 2021精品亚洲中文字幕| 国产高清亚洲一区亚洲二区 | 久久国产精品不只是精品| 国产二区三区不卡免费| 亚洲AV日韩AV综合在线观看| 成人做爰www网站视频| 国产内射性高湖| 99国产欧美另类久久久精品| 塔河县| 中文字幕人妻无码一区二区三区| 2020国产激情视频在线观看| 亚洲国产无线乱码在线观看| 日韩人妻少妇一区二区三区| 无码福利写真片视频在线播放| 久久国产精品无码网站| 日本韩国一区二区精品| 亚洲av专区一区| 国产精品亚洲五月天高清| 国产成人亚洲欧美二区综合| 久久精品免视看国产成人| 日韩亚洲精品国产第二页| 亚洲综合精品一区二区三区| 日韩中文日韩中文字幕亚|