令和4年度春期 応用情報技術者試験(AP)の午後問題3は、
- 数独(パズルの解答を求めるプログラム)
に関する問題でした。
数独は、Project EulerのProblem 96で取り組んだことがあるのですが、試行錯誤を繰り返しながら作ったプログラムを今、振り返って見てみると恥ずかしいですね。前回は、Ruby
で取り組んだので、今回はPython
で挑戦してみました。
Python
はまだまだ取り組み始めたばかりですので、アドバイスなどコメントいただければ勉強になります。
プログラム例(r04h_ap_pmq3.py
:データ構造Z導入前)
実行結果
% python r04h_ap_pmq3.py 281493765 946257381 573168429 495671238 618325974 327849516 762984153 159736842 834512697
プログラム例(r04h_ap_pmq3_kai.py
:データ構造Z導入後)
データ構造Zの初期化処理(z_init
)と更新処理(z_update
)を導入したものですが、データ構造Zの更新前にZのコピーを行っているので実行速度は改善されてません。
更新処理を取り消す処理をうまく書くことができたら、データ構造Zのコピーが不要になると思うのですが、中々難しいですね。