左脳大回転

★眠いんだけどさ
「あれ…もしかしてこーすれば…?」のループにはまって止められず(笑)。

考えてみれば、重複チェックをするのに、縦・横・3×3ブロックの全部を走査する必要はなくて。
9×9の左上隅を原点O(0,0)、右下隅を(80,80)として、原点から横にビットマップのようにマスを埋めていくことを前提にすれば、P=(x,y)として

おお、地震。

チェック対象はOからPの手前までなわけで。

あとは行単位で考えたときに、使った数字は同一行には使えないわけだから、その数字は重複チェックの前に除外できる。

そんなこんなで、けっこう高速化できた。

ただ、試行回数が1000前後になると警告が出る(ことがある)。

なんとかしたいなこんちくしょう。

コメント

タイトルとURLをコピーしました