bitboard.ml

なんか、最近プログラム書いてないなぁ。ということで、気晴らし。
今んところ、入出力と標準Boardへの変換以外、副作用zeroだよ。ふふふ。てなわけで、着手可能箇所列挙とmove処理まで。Bitboardは上下左右へのシフト処理を高階関数で書くと、大変きれいに仕上がる。C++のときは、最初高階関数使ってたが、後にboost ppつかったんだっけか。忘れたな。そして、fold_left!fold_left! もう、最近let rec iter ...もかかない。以前、T先生が言っていたことに激しく共感。他の人には読めないかもしれないが・・・。
にしても、速度はどんなもんか。このあたり、どのように最適化がかかるかが結構肝なんだが、あんまり期待できないかも。OCamlってどのくらいインライン展開してくれるんだろうね。うーん。それから、専用のアセンブリ命令をはいてくれると大変うれしいんだけど、そうも行かないだろうな。population countとfind first oneとbit setとbit testが使えれば・・・。
index boardに関しても、もう少し一般論を与えたい。ある程度頭の中ではできてる。問題は、move時にindex -> index処理のできるpatternと、そうでないものがあるという点。この辺も関数にしてしまうか。