ナンプレ(数独)問題作成プログラム その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) という訳である。
図を作るのに疲れたので、今日は文章が少ない。
わけわかんないですね。
ちょっと図を描くだけでもかなり時間がかかってしまうし、プログラムコードを乗せるとなると、コンパイルして確認する必要があるし、全然進みませんな。