引退ポエム 2

競技プログラミングには長い時間を捧げてきたから、引退に関してそれなりに思うことはある。一度ではとても書き切れないから、何度かに分けて書いていこうと思う。

 

引退はしたが、まだ問題はそれなりに解ける。昨日も書いた通り、やめても即座に問題が解けなくなるわけではないのだ。今でも私には赤コーダーの実力はあるだろうし、当分はそうあり続けるだろう。

 

さて、コンテストで勝つために必要なものは何か。昨日はひとことで実力と呼んだそれを、今日はもう少し詳しく見ていくことにする。

 

競技プログラミングにおいて、実力はおそらく、以下の二つに分けられる。すなわち、じゅうぶんな時間をかけて問題を解く力と、解ける問題を時間内に解く力だ。簡単のため、前者をパワー、後者をテンポと呼ぶことにしよう。

 

パワーとはすなわち、重厚な土台だ。算数の教養や思考の筋道、それにコードの設計が、これに該当する。パワーはなかなか失われない――解けるまで粘ればいいから、ほんとうに問題が解けなくなることはあまりないのだ。

 

反面テンポは、繊細なる感覚の領域だ。一度見た考察を素早くスキップすること、細かいバグを出さないこと。テンポは直近の練習がものを言う――自分の細かい癖に合わせて、絶えずアップデートを繰り返さねばならない。

 

テンポだけで、人は戦えない。そもそも解法が分からなければ、正確なコーディングなど無意味だ。一方パワーだけなら、不器用ながら勝負にはなる。バグらせて遅くなっても、最終的は通せる。だから私はまだ赤コーダーをやっていけるのだ。パワーだけなら、まだ相応にあるから。

 

さて、昨日書いたように、私はボロボロに負かされてやめたいのだ。諦めるには、もう敵わないと心から思えないといけない。言い換えるなら私は、自分のパワーの限界を感じて終わりたい。

 

だが残念ながら、私が感じられるのはテンポの限界だけだ。コンテストは時間が余るようにはできておらず、バグらせれば消化不良を起こすことになる。パワーの限界を知るためにはまず、パワー勝負に持ち込むためのテンポが必要だ。

 

だから、少なくともしばらくは、私の敗因はテンポだ。私はなんでもないコードをバグらせて負ける。当たり前の関係が、なぜだか見えずに負ける。

 

仮にパワーが落ちてきても、おそらく私はそう気づけないだろう。諦めるべき理由がそこにあっても、私にそれが見えることはないのだろう。それが敗因になることはないからだ。私の目の前には常に、テンポというもっとわかりやすい敗因が横たわっている。