メニエスの名のもとに

プログラミング関係を中心としたぐだぐだブログ

ナンプレ(数独)問題作成プログラム その3

マスに数字の候補がいくつ入っているか求める

特に知りたいのはマスに入っている数字の候補が1つだけの場合だが、数字の候補の数を数えれば分かる。そして、フラグを持つのを止めたので、出来るだけ高速に計算したい。
そういう時に使われるのが、SIMD Within A Register というテクニックであるThe Aggregate: SWAR, SIMD Within A Registerにまとめられている。と思ったが、実際にコードがあるのはThe Aggregate Magic Algorithmsの方でした。

8ビットで説明する。まず、8個の箱に入った●の数を数える例。

それから、8ビットのレジスタの1の数を数える例。レジスタって何? という人もいるかも知れないので、ここでは変数として説明する。

CPUの1回の加算命令で、複数個の小さな加算(2ビットずつの加算や4ビットずつの加算)を行っているので、SIMD(Single Instruction Multi Data) という訳である。

図を作るのに疲れたので、今日は文章が少ない。
わけわかんないですね。

これアフィリエイトになってんのかなぁ?

ちょっと図を描くだけでもかなり時間がかかってしまうし、プログラムコードを乗せるとなると、コンパイルして確認する必要があるし、全然進みませんな。