アルゴリズムを作成する楽しさにスピードアップさせて満足するというものがある。
ほんの1行で格段に上がることも多々あります。
呆然とするばかりである。こんなものを載せていたとは、と...
数独の超難問を解くpythonのプログラム
2019年10月22日 このころ個人的には今と同じでさえないですが、今と比べるとはるかに幸せな時代でした。
なんで見直そうかと思ったかといえば過去のルーチンではCodinGameのSudoku Solveの最後が解けないから、
実際、最後の問題はコンピュータで作成した難解問題らしく、それでも解けませんでした。
ロジック的にミスがあるようです。
過去の時間の測定は7.2秒ほど
1) 無駄読みを削る
全体としてもどうにかしたいけど、具体案が浮かばない。
ただこれでは遅い。
ここは全チェックをかけず打った場所の縦横ラインと3x3枠の判定で無駄よみは減らします。
(画面はキャプチャー取り損ない変化していません)
1.6秒高速化
2) 無駄読みを削る
クリア判定を毎回のように行っていました。
最初に、空白が1つでもあったら判定エラーにしたところ
0.8秒高速化
3) deepcopyを減らす
仮に入れてボードエラーが起こった時もdeepcopy
そこをボードエラーが起こった時は手を戻すに変更
最近作るアルゴリズムでは、deepcopy自体、ほぼ使うことないです。
0.6秒アップしました
4) 無駄読みを削る
ここを高速化しようとしていました。
そして呼び出し元をみていると...
146行目、なにやっているんだろうか?
コメントアウト
2.3秒ほど高速化しました。
呆然とするばかりである。こんなものを載せていたとは、と...
少し修正した全ソース
https://colab.research.google.com/drive/13H7j9ZDuXGQtmNwq7iDfe6E6AZ-CK-yJ?usp=sharing