初冬

競技プログラミング・俳句・生成AI(Bard・Stable Diffusionなどなど)・AIアート・日記。それらを書いています。それらについてとりとめもなく書くブログです。行き当たりばったりで書いてます。

論理エラーを眼前に出す。

今日、競技プログラミングの問題を解いているときに「なにが間違っているんだろう?」とどうしても分からないところが出ました。
プログラムは書いた通りに動く、その通りです。
自分の意図するプログラムがソースコードでは書けていると思うのに上手く動きません。
別な書き方で書いてみると正しく動きました。
元のプログラムに論理エラーがあったようです。

論理エラーの解決方法にほかの全く同じ論理で書かれたプログラムを書くという方法があると思います。
全く同じ論理ではあるけれど、書き方が違うソースコードを書くことでそれが正しく動けば、それと正しく動かなかったコードのどこが違うかを検証すれば答えが出てくるようです。
今日、プログラムを動かしていて気づきました。
答えは同じだけどルートが違うプログラムを書くわけです。

同じ意図するソースコードをグッと睨みつけながら同じように動かないのはなぜか確かめてみることで、正しく動かないプログラムのソースコードに気付けると思います。
変数のプリントのデバッグが難しいときなどは役に立つかもしれないです。
今日はまさにプリントのデバッグが難しいときに別な書き方をしたら正しく動いたので、コードに込めようと考えている考えは間違えてないことが分かりました。

別な書き方をすることで、やはり同じ間違いをするようでは、もともとプログラムにしたいと考えているアルゴリズムが間違えている可能性があります。
別な書き方をすることはそれだけでも意味があると思います。
それによって今やろうとしていることが間違いだと気付けるだけでも、大きな発見です。
間違いのある方針か正しい方針かに気付くためにやるわけです。

競技プログラミングに関係なく、私は正しい方針が正しいと気付くにはどうすればいいか、間違いのある方針が間違いであることに気づくためにはどうすればいいか、ということに興味があり、競技プログラミングでもすごくそのことを意識していました。
今でもそのことを知りたい、詳しくなりたい、そういうことができるようになりたい、それについての詳しい考えを得たいと思ってます。

© 2023 ashitsunokara