bitboard
囲碁の場合はどうしたものか・・・・ サンプル様に作成したもの #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>…
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を参考にしてみたいと思います。 (たまたま見つけたサイト) やねうらお氏のサイトにリンクがあり、そのサイトに詳しくオセロの反転処理などが書かれています。 ループ版とループを使…
まずは石の並びを定義します。 黒石のビットを入力してください。 00000 00110 01010 01100 00000 白石のビットを入力してください。 01111 11001 10101 10011 11110 ┌○○○○ ○○●●○ ○●○●○ ○●●○○ ○○○○┘ 上記の石の並びのbit表現 bs ws bs: 00000 00110 01010 01…
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 …