2010-04-01から1ヶ月間の記事一覧
bitboard関連の記事を再度見直すと・・・・ なんだか自分の低脳さを浮き彫りにしているように思えてきた(笑)頭で考えて駄目なら、幾通りものパターンを作成して答えが一致するかを考えられるプログラムを考えてみるとか・・・・・ 時間が無いながらも一応…
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を参考にしてみたいと思います。 (たまたま見つけたサイト) やねうらお氏のサイトにリンクがあり、そのサイトに詳しくオセロの反転処理などが書かれています。 ループ版とループを使…
忙しくて何も出来ない! とりあえず式だけでも書き残します。 x=00000 00110 01010 01100 00000 y=01111 11001 10101 10011 11110 x & y x & !y !x & y x ^ y x | y !(x | y) (x & y) - (x | y) -1 x | !y !x | y !(x & y)
miniTexが使えるとかなんとか試しに書いてみます。 素晴らしい!!
まずは石の並びを定義します。 黒石のビットを入力してください。 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 …
open System let printNumber (num : int) = let bit = Convert.ToString(num, 2) let hex = Convert.ToString(num, 16).ToUpper() printf "%d\n 2 (%s)\n16 (%s)\n" num bit hex;;
囲碁をビット演算考えてみる まずは石を取る為の式が必要なので考えてみました。 ■ データの持ち方とビット演算で考えるのは何故か 19路盤では置ける場所が 19*19=361 なので361桁の2進数を用意すればよい。 361桁のデータ型はないので、ビット演算が出来る…
NDS Program Room たろサ(Tarosa) http://www.geocities.jp/momoonga/