(日記)競プロのモチベが下がってきた時の対処法

競プロ(Atcoder)を勉強し始めてまだ日が浅いのでこれは間違った推論であるかもと思う。

競プロの過去問を解いていたらなぜこんなことをやっているのかわからなくなってしまった。何にも集中できなくて、何も進まなかった。気分転換に散歩することにした。散歩中に考えていたことを残しておこうと思う。

与えられる数字たちを何回2で割れるか考えてみたり、なんかで割ったあまりを考えたり、N進数に直したり、迷路をどうやって移動したらゴールに辿りつくのが早いか(深さ・幅優先探索)、動的計画法(Dynamic Programing)は何やってるかわからないし、したから何枚かのカードを取ってきて上に重ねる。

なにやってるのかわかんなくなってくる。意味あるんか、とか何のためにやってるのか?と虚無モードになってくる。

楽しいことを考えることにした。TLに久しぶりに雀魂の動画が流れてきた。数ヶ月ぶりにもう一回やってみたいかもと思っていた。リャンメンまちにするとか、どの順番で切ったらいいのか、とかいろんな角度でいろんな人がいろんなことを言っていて面白い。

思うに、この手の勉強で、脳の経路が構築できていないのだ。まだ未開拓でジャングルになっていて、ニューロンがあまり結びついていない。知らんけど。

アルゴリズムのコードの答えを絞り出すという経験が浅い。甘く言えば浅いだけなのだ。好きなことは飛びついてしまう。それは躊躇なく、何も嫌がることなく、自分で勝手に、体が飛びついてしまう。すぐにイメージが湧く。

歩いていると、道の側溝はタイルが敷かれている。1つ飛び越えるか2つ飛び越えるかでゴールまでコストを最小にして辿りつくのはFrog問題である。これを思い出してまた嫌になってきた。

ChatGPTくんにどうしたら勉強捗るか聞いたら、小さな目標を達成していくのがいいとアドバイスの中の一つにあった。直近といた簡単な問題を考えることにした。下から何個かのカードをとってきて、上に重ねた時のカードの番号がどうなってるかを出力するコードである。自分で解いた時には、紙に書き出してみて、「あまり」で分類すればうまくいきそうだと気づき、インデントが0から始まってる問題でめちゃくちゃつまづきなから数十分かけてACした。解説をみたらC++では rotate を使えばできるとも書いてあって、なんじゃっそりゃとなった。

思うに、何かしらアルゴリズムは何かしらの目的がある。もうちょっと広い、大きな視点で見たときの結論が自分には必要だった。「数える」というのが肝なのだと思う。

小学校1年の最初のほうの算数で、おはじきがあって、このおはじきは何個ですか?というのをやった気がする。これは数字という概念とおはじき(の個数??)というのが対応するよう考えるのだ、ということを教えているのだと思う。

そのうち、いろんなことを数えたいと思うようになる。もっと複雑なことだ。どういう道で通れば、散歩のルートは短いか、いやそれだと最短経路問題、、小さい視点なのだ。麻雀における牌の捨て方や、道の問題も、 並び替える問題も、何かを数えている。そしてよりより数え方があるはずなのだ。それが知りたい。

ニューラルネットワークはN×N×N×…のように何回も何回も掛け算がおこなわれて、もはや何次元という世界ではない。挙動を知ることすら難しい。それでも知りたい。どのように動いているのか、なぜうまくいくのか?を。

もっと早い楽な数え方が見つかれば、世界が変わるかもしれない。結局のところ、房州さんの、「娯楽を求めて勤勉に行き着く」ということなのかもしれない。

この記事が気に入ったらサポートをしてみませんか?