指し手の構造を変えるのは無理でした……
指し手をBonaそのままはきつそうだったので
ちょっと大きめでこんな感じでやってみようと思ったんですが、
/* xxxxxxxx xxxxxxxx xxxxxxxx 11111111 destination xxxxxxxx xxxxxxxx 11111111 xxxxxxxx starting square or drop piece+nsquare-1 xxxxxxxx xxxxxxx1 xxxxxxxx xxxxxxxx flag for promotion xxxxxxxx x111111x xxxxxxxx xxxxxxxx piece to move xxx11111 1xxxxxxx xxxxxxxx xxxxxxxx captured piece */ #define To2Move(to) ((unsigned int)(to) << 0) #define From2Move(from) ((unsigned int)(from) << 8) #define FLAG_PROMO (1U << 16) #define Koma2Move(piece) ((piece) << 17) #define Cap2Move(piece) ((piece) << 23) #define Move2To(move) (((move) >> 0) & 0x00ffU) #define Move2From(move) (((move) >> 8) & 0x00ffU) #define Move2Promo(move) (((move) >> 16) & 1) #define Move2Koma(move) (((move) >> 17) & 0x003fU) #define Move2Cap(move) (((move) >> 23) & 0x003fU)
影響が大規模すぎて、修正無理でした。
むしろ、一から作り直したほうが楽だと思う
あきらめます。
根性足りません
それで、コードをよーく見て無駄なことをしてるところなどを改良して、
#1 758725.3回/sec time=1.318秒 #2 761035.0回/sec time=1.314秒 #3 760456.3回/sec time=1.315秒 #4 758725.3回/sec time=1.318秒 #5 758725.3回/sec time=1.318秒
打つ手のコードはだいぶ無駄がありました。
LS3600さんやまねしまねぞうさんには全然追いつけませんが、
そこそこ速くなったんではないかと(^^;
なお、通常探索部でもPinを求めるのをやめました。