囲碁

ビット演算での考察 [第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…

ビット演算での考察 [第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 …

石が取れるかどうか (ビット演算)

囲碁をビット演算考えてみる まずは石を取る為の式が必要なので考えてみました。 ■ データの持ち方とビット演算で考えるのは何故か 19路盤では置ける場所が 19*19=361 なので361桁の2進数を用意すればよい。 361桁のデータ型はないので、ビット演算が出来る…