AtCoder でレーティング 1,200 を超えました! 自慢します。

レーティング関係

推移

開始〜『入水』まで 15 ヶ月かかりました。長期戦でした。

2023-09-rating-1230.png
Figure 1: 水色レーティング到達 (入水)

各所でユーザ名が水色表示となりました。すっかり嬉ピクミンと化しています。

2023-09-light-blue-problems-1.png
Figure 2: 水色になると『成った』感があります

『入水』は多くのプレイヤーが掲げる目標であり、『入水記事』も人気コンテンツです。好き勝手書いていきますよ!

手応え

AtCoder を始めて以来、巨大な万力でも回し続けたような気持ちです。 1mm も進まないまま今日の自分をミキサーにかける、そんな無念の連続でした。

それでも お前はプログラミングが下手だ と突きつけてくる世界の輝かしいことと来たら! どうにも目を逸らすことができず、水色までやって来れました。

水色レーティングの位置

レーティング 1,230 は AtCoder のアクティブユーザ全体の上位 7.5% 、茶色レーティング以上で見ると上位 25 % 程度にあたります。分母を絞ればゴロゴロいるわけですが、上澄みなのは間違いありません。 稀によくいる レベルです。

Table 1: ユーザ数と順位
レーティングの範囲 僕の順位 該当ユーザ数 僕の順位 / 該当ユーザ数 [%]
灰〜 (0 以上) 7,684 104,331 7.37%
茶〜 (400 以上) 7,684 28,927 26.6%

モチベーション

入緑〜入水の間では、超美麗ライブラリ cojna/iota を読んだり、動的計画法を (表面上) immutable に解くのが至上の楽しみになりました。面白そうなものを探し続けた価値があったと思います。

これまでで一番の収穫

半年間灰色コーダーの時期がありました。 入茶記事 の通り散々でしたが、あれが良かったと思います。

クダを巻くことに比べたら、自分の実力に絶望する方が正常です。今後もそうした転換を図りたいものです。

今後の訓練

今より上のレーティングを目指すためには、基礎学力が足りません。今さらですが、進学校レベルの高校数学をやろうかと思います。

学部教養レベルの数学も使いたいですが、遠いです。

使用言語

僕が Haskell を使わなかった場合の if は、過去の活動を遡って確認できました。 4 回 AtCoder に挑戦し、いつも 1 日で挫折しました。

2023-09-if-i-used-rust-for-atcoder.png
Figure 3: 過去の提出

僕のような例は多数派のはずです。むしろ Haskell 無しで競プロにハマれる方が、特殊な才能 (面白いものを見つける嗅覚) がある気がします。

人々

Haskell / AtCoder 周辺の人々への関心を書きます。

閲覧環境

茶色時代 (入緑記事) とは打って変わって、コンテスト後に人の Haskell を読むのが一番の楽しみとなりました。

毎回フォームで言語指定するのが面倒くさくて、 Haskell の提出を検索するリンクを常駐表示させてみました:

2023-09-atcoder-with-haskell-links.png
Figure 4: ブラウザ拡張で画面左に検索リンクを表示

これで相当快適になりました。 一応ソースも置いておきます (Gist)

隣の Haskeller

AtCoder / Haskell 周りのイカれたメンバーを勝手に紹介するぜ! (常態)

隣にいない Haskeller

最近の僕はエキセントリックな面々に近づいており、『実行速度でソートして 1 ページ目の提出に現れる (下図)』『ライブラリ全体を 1 行にフォーマットする (提出例)』『Emacs Lisp の束の間 Language Owner になる』などを達成し、インターネットっぽくなりつつあります。

2023-09-second-fastest-language-haskell.png
Figure 5: AtCoder で 2 番目に速い言語 Haskell を自分がやる日が来るとは……!

盆栽

最後に経験値やライブラリの話を書きます。

典型盆栽

手札が揃いました。コンテスト中は、ほぼ定型的なプログラムしか書かなくなってきたと思います。 15 ヶ月経って慣れました。

問題演習は、自分自身に正しいインプットを施して来たかの確認作業という面があります。これは『盆栽』と呼んでしまって良いでしょう。

Haskell である意味が無い

残念な点としては、 Haskell らしい Haskell を書かなくなりました。結局、一部を手続き型プログラミングにすると、速くて便利でバグが減ると感じています。

しかし 久しぶりに Rust を書くと『関数型言語 Rust』ができたりする (提出例: ナップサック問題) ので、 Haskell のおかげでプログラミングの幅が広がったのは間違いありません。

また Haskell 自体、ポイントフリースタイルで関数合成できるのを爽快に感じます。 Haskell でない意味も無いならば、引き続き Haskell を使って行こうかと思います。

AtCoder をいつ止めるのか

日々の訓練が自然消滅するまではダラダラやっていこうと思います。 DP くらいは黄 diff の問題も解けるくらいやり込みたいです。

終わりに

入水時点の興味・関心を書きました。輝かしい日々でした。

2023-09-light-blue-performances.png
Figure 6: パフォーマンス (AtCoder Charts)
2023-09-light-blue-heatmap.png
Figure 7: Heatmap
2023-09-light-blue-problems-3.png
Figure 8: 入水したくて水 diff 解きまくり
2023-09-light-blue-problems-4.png
Figure 9: ABC 389 問, 他 273 問 (?), 計 662 問を解いた
2023-09-light-blue-problems-2.png
Figure 10: 解いた ABC の内訳