・王移動の時、自爆しないように(利きのあるところに王は行けない)・交換値計算でマスに利きを付けている駒を探す・静止探索で駒に利きを付けている(取れる駒)駒を探す・開き王手生成(逆ピン駒を探す)・評価関数で王の周りの利きの数の計算のために使っている。利きデータを使わずに上記の動作をさせるには...王手をかけている(王に利きがある)の判定と、ピンしている駒を探すのは同時に行える。自分の飛び駒の利きを伸ばして行き、相手の駒が存在し、相手玉に影利きを付けているなら、相手ピン駒。相手玉に利きを付けているなら王手。王手をかけている→手番を渡すと、王手をかけられている→あたりまえ。している駒は評価に使える。駒のSEE値は有力な局面判定。Bitboardの説明いまさらながらこのような説明は不要かもしれないが、Bitboardの説明。駒位置をビット位置であらわす(ここでは説明を簡単にするため81ビット演算が使えるとする)。歩を突く手を生成してみよう。**に歩がいるときの利きのテンプレートを押し付ける方法もあるのだが、シフト命令でやってみよう。演算1回で9個の歩を動かした(どうだすごいだろ)。あとは味方の駒位置ビット列とxorして、ビット位置を端から読んでいけば合法手となる。前に動く駒はすべてこの演算で動かすことができる(飛香の飛び駒の処理は別に行う)。次に、9三と1三にいる銀を右上に動かしてみよう。九この81ビット列を10ビット右シフトすると、あれ、9一は変。右端にいる駒を右に動かすと左に回ってしまうので、1筋を0にしたものとandしておく。九これを10ビット右シフトすればよい。げっ、_mm_slli_si128/_mm_srli_si128は8bitずつのシフトしかできない!バレルシフタは回路を食うが、それは無いでしょ。sse5では自由なシフトができるそうだが、幻の命令セットになったので、shld/shrdでちまちま書くか。SystemはWindowsでもLinuxでも32bitでも64bitでも動くようにしてきたが、プラットホーム決め打ちになりそうな予感。Systemの目標は、そこそこ新しい技術を取り入れるそこそこ分かりやすいソースコードそこそこ強いなのだが、今日の技術からすると、古いところが多いので、次の部分を作り直す。静止探索での1手または3手詰め思考深さの予測また、前回できなかった並列探索も実装しよう。かなりの時間が必要だが、いつかはやらないと取り残されるからね。以下の局面で、後手番の手生成速度を計測している。1.14では、262,669,136手/秒(合法手判定あり)。evincehttp://developer.amd.com/Downloads/CodeAnalyst3_3_18_0361Public.tar.gzよりCodeAnalystのソースを落とし、解凍する。/opt/CodeAnalyst/bin/CodeAnalystおお、動いた。プロファイル結果コンピューター将棋の進歩2より次の一手問題第1問。0.04%静止探索で半分以上消費している。情報の更新も結構時間を食っていることがわかった。12.04用のdebファイルが公開されたので、上記のビルド作業は必要なし。第22回世界コンピュータ将棋選手権バージョン公開http://blog.gigacraft.net/download.htm駒落ちには対応していません。稲庭将棋は対策をしていません。詰将棋モードは動作しません。第22回世界コンピュータ将棋選手権1次予選は4勝3敗で10位となり、2次予選には行けなかった。急戦にはめっぽう強い。Systemが銀を追い払う5六歩と打ったところ。△6六歩▲7七金△6五桂と銀取りを気にせず調子よく攻められ、70手でと、潰されたうえに、意味不明の▲7五歩(思考中断でスコアをINFにハッシュ登録するパスがある?)を指して、一気に寄せられてしまった。投了図なんか、初歩の一手問題で、「銀取りの歩を打たれましたがどうしますか」で「銀取りにかまわず、△6六歩▲7七金△6五桂で後手勝勢です」のような感じだ。このような無様な読みをしたかは帰ってからよく考えてわかった。そのうちこの理由を書くことにしよう。電通大伊藤先生に貸してもらいセッテイングすることができました。自分の席より向かいのでかいマシンはSelene。斜め向かいは、なのは。「このシマは(1次)全部抜けるぜ」と言われていたのですが...orz私の跡地には2次予選でクマ将棋が入りました。