競プロへの復帰について

東大か競プロか

おれが競プロを引退したのがもう3年前のことになる。 2020年の1月にAtCoderで目標の水色を達成して引退。 それからだらだらとCFをやり、青色中盤くらいまでは行ったが、 そのあたりで再就職が決まったのと、 いわゆるMathForcesで失敗して点数が暴落したのを見て完全引退。 それから3年間、競プロからは離れていた。

今月39歳になろうとしているおれだが、 競プロに復帰しようと準備中だ。

に書いたように、おれは高校生の時から20年間、 鼻詰まりに苦しめられてきた。 それが、大学受験でも失敗し、競プロでも失敗した理由だと考えている。

おれはこの20年間に起こった結果について、 何一つ自分の能力をまともに発揮出来たと思ったことはなく、 何一つ納得していない。 強烈な片側鼻閉はおれの能力を完全にファックした。 腐っても鯛という言葉はおれのためにあると思って生きてきた。 いつか鼻詰まりの治療法が見つかる日を待って、しのいできた。 関西のとある耳鼻科で、「この鼻は治らない」と言われた時には、その場で泣き崩れたこともある。

神はおれを見放してはいなかった。 この鼻詰まりは、先月、慈恵医大で受けた手術によって見事に改善したのだ。 ここで今おれが思うことは、この納得していない気持ちをいかに晴らそうかということだ。

鼻詰まりが治ったらやってみたいと思っていたことをすでにいくつかは進めているが、 さらにやるとしたら、何だろうか。

東大受験だろうか? おれは当時、鼻詰まりで絶望してしまい、 東大受験をすることも出来なかった。 あの時の自分を超えたいという思いはあるが、 今やこれについてはどうでもよくなりつつある。 たぶん、おれにゴリゴリの学歴コンプレックスでもあれば話は違ったのだろうが、 実際にはおれは京大卒であり、学歴コンプレックスを1ミリも持ち合わせていない。 それどころか、京大卒であることに誇りを持っており、 学歴を上書きするつもりもない。

やはり競プロだろう。 おれの競プロがこのまま終わっていいはずがない。 このまま負けたまま逃げるのは、間違っている。 そこで今回は、 競プロに復帰するに当たって思うことを書いてみようと思う。

TLEは運営の怠慢である

おれが以前に競プロをやっていた時は、Rustを使っていた。 これは、Rustジョバーになりたいと思っていたからというのと、 Rustの実行速度が競プロ向きだと思ったからだ。 このうち前者はすでにどうでもよく、 引き続きRustを使うならば後者をどう考えるかが問題となる。

おれはこれに対して、言語の実行性能を競プロの言語選択の理由にすべきでないと考え、 Pythonを使うことにする。 アルゴリズムを記述する上でPythonが最善と考えるからだ。 その上でもし、想定解のコードを書いているにも関わらず TLEするならば、それはおれが悪いのではなく、運営が悪いと考える。

言語による速度差というのは、アルゴリズムの本質ではないからだ。 もし、競プロがアルゴリズムコンテストを名乗るのであれば、 提出されたコードの計算量を解析し、それによって正誤を判定すべきであり、 それをしないのは、ただの怠慢だと思うからだ。

実行時間によってアルゴリズムを評価するというのはただの近似解であり、 そこにわざわざ付き合う必要はないと考える。 もし、PythonでTLEするならば、レートなんかくれてやればいい。 そんなレートには価値はないからだ。 逆に、AtCoderが純粋に計算量だけを評価出来るコンテストシステムを作ったならば、 AtCoderのレートの価値は爆上がりするだろう。 というかそれ以前の問題として、Python 3.11にアップデートしてほしい。

ライブラリミニマリスト

Rustで競プロをやっていて思ったことは、 ライブラリの実装はめんどくさいし、 ライブラリの実装によって差がつくことがあるのはバカバカしいということだ。

これはもちろん、 ライブラリは使用禁止の方がよいと言ってるわけではないが、 事前のライブラリ準備量のようなものでゴリ押し出来るようなケースが存在することは、 良いことではないと考える。 例えば、永続データ構造を使うと簡単に解けますと言われても、 だから何なのだとしかならない。 これは、知恵を試しているのではなく、知識を試しているということであり、 本質とは思わないからだ。

Pythonの標準ライブラリにはたくさんの機能が揃っていて、 組み込みのpow関数を使えばmod逆元を求めることも出来る。 また、AtCoderについていえば、 numpy, scipy, networkxなどの ライブラリも利用することが出来て、 行列計算やグラフアルゴリズムなどの多くは、 自分で実装する必要がない。

これらのライブラリ、とりわけnetworkxは 性能があまり良くないことが知られてる。 しかし、だから何なのだろうか? 何度もいうが、TLEには付き合わない。

出来るだけ準備を少なく、 標準的なアルゴリズムについてはライブラリを使う。 そして、足りない部分については知恵で補う。 それで問題を解く行為には価値があり、 それで解ける問題には価値がある。

それ以上のことを要求する問題には付き合わない。

Eくんの健康への懸念

おれは今、準備として、 競技プログラミングの鉄則 という本を網羅的にやっている。 網羅的にやるのは、理論は理解していることでもPythonで書いておく経験が 重要と考えるからだ。 次は、同じ著者の問題解決のための「アルゴリズム×数学」が基礎からしっかり身につく本 を同じく網羅的にやろうかと思っている。

著者はE8くんというのだが、 自身がゴリゴリの頂点競技プログラマでありながら、 自身の知恵を社会に還元したいという目標を持って 身を削る活動を続けている。

少し変わってると思うが、アスペルガーなのだと思う。 しかしルシファーとは違って、その特性を有益な方向に活かせている 有益アスペルガーだ。 アスペルガーは基本的に、視覚優位の傾向があるが、 本については この特性がよく生かされているように感じる。

しかし、心配なことがある。 血圧がバグっているようなのだ。

しかもおれの観察によると、コロナワクチンの2回目以降に血圧が壊れている。 精密検査も受けたようだ。 血管が壊れたか、心臓が壊れたか。 あるいは自律神経が壊れたか。 とにかく、何かが壊れているように感じる。

せっかく、これだけの才能があり、 志もあり、それを少しずつ実現しているのに残酷なことだ。 なぜ、打ってしまったのだろうか。謎だ。

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。