bitboard

碁盤の表示 + オセロのbit演算

囲碁の場合はどうしたものか・・・・ サンプル様に作成したもの #include <iostream> using namespace std; typedef unsigned long long uint64; const uint64 OUTSIDE_BOARD = 0x1FE0C183060FF; const wchar_t STONES[] = { L'○', L'●' }; const wchar_t BOARDS[] = {</iostream>…

ビット演算での考察 [第02局目]

bs = 000 010 000 ws = 010 101 010 // Surface Board sb = bs | ws sb -> 010 111 010 ■ 欲しい結果 横 = 000 010 000 縦 = 000 010 000 結果 = 000 010 000 ■ 式 (3路盤) // Horizontal Surface Board hsb = (sb > 1) // Vertical Surface Board vsb = (s…

オセロのbitboard処理について

囲碁のbitboardがまったく見当たらないので、とりあえずオセロのbitboardを参考にしてみたいと思います。 (たまたま見つけたサイト) やねうらお氏のサイトにリンクがあり、そのサイトに詳しくオセロの反転処理などが書かれています。 ループ版とループを使…

ビット演算での考察 [第01局目]

まずは石の並びを定義します。 黒石のビットを入力してください。 00000 00110 01010 01100 00000 白石のビットを入力してください。 01111 11001 10101 10011 11110 ┌○○○○ ○○●●○ ○●○●○ ○●●○○ ○○○○┘ 上記の石の並びのbit表現 bs ws bs: 00000 00110 01010 01…

適当に作った bitboard 5路盤 碁盤表示

namespace Igo type Igo private() = member this.Print (bs : int) (ws : int) = let goban pos (bs : int) (ws : int) = if ((bs ^^^ ws) >>> pos) &&& 1 = 1 then [| "●"; "○"; |].[(bs >>> pos &&& 1 ^^^ 1 ||| ws >>> pos &&& 1)] else match pos with …