Weekly Report

虚無埋めをしたけど全然虚無じゃなかった件

週報 05/31-06/06

虚無埋めとは言うけれど

速解き力の不足を感じていたのと、AtCoder Problemで解けるレベルなのに解いていない問題が見えてる状態がけっこうイヤで、この1週間でそれなりに埋めてきた。

具体的には、ABCのAB問題と灰diffを全部埋めた。これでAtCoderの問題としてはだいたい累計750問くらい解いているように見えている。

よくよく調べてみると、このほかにコンテスト中で反映されていない典型90で解いたのが30問くらいあって、さらにPaizaで200問ちょい、AOJでも50問ちょい解いているようなので、トータルとしては1000問を超えた感じになる。

1000問もやっていると、おなじ虚無埋めでも当初はヨチヨチやっていたのがA問題なら問題を見て10秒くらいで書き方がわかるようになった。

ここで重要なのは、自明になったのが書き方であって解き方ではないという点だ。A問題だと解き方ならそれこそプログラミングをやっていなくてもわかることが多いだろうが、書き方は意外と自明でないケースがままあると思う。

虚無埋めはこの点でかなり速解き力に貢献したと実感がある。より高度なコードを書くときに、ベーシックな部分で一瞬たりとも悩まなくなることは大きい。思考の分断がなくなり、方針自体の正誤とコード化する部分の正誤の分離性が高まるからだ。

さらに、灰diff埋めでは、数学的素養がより必要になるARCやAGCの問題を解く練習にもなった。

ARC、AGCのA問題は実装はとても軽かったとしても、それなりに考えないと解法が分からない問題が多かった。これは私自身の不徳の致すところ、つまりは数学的素養の欠如から来るものだと考えられ、いわば考察の定石に慣れていないことの影響が大きいだろう。

なんというか、これらはモロに受験数学的なのだ。私は学生当時に数学をちっとも頑張ってこなかったので(高校の定期テストで怒涛の12点を取ったことがある1)、なるほど一定水準までは才能以前に演習量がやはりものを言う世界だと痛感している。

長々と書いてしまったが結局のところ「虚無埋め」という言葉は有名進学校でさんざん勉学の鍛錬を行ってきた人にとっての自明ゆえに虚無と言わしめるのであって、私のようにそもそもの鍛錬の量が不足していた人間にとっては虚無どころか非常に有益であった。

なんなら競プロの問題解くよりも数IAの青チャートとかやったほうがいい説すらある。

先週との比較

どうも進捗表を有効活用できていない気がするので改善したい。

進捗表

前回からの変更部分は太字。形骸化した項目が多かったので大幅に表をスリム化した。

項目進捗/状況
競プロ精進灰diff埋めた
Haskellhaskell-jpを発見
圏論haekell-jpに気になる記事あり
RustRust自体の探求は停滞中
競プロレート向上30分遅れで参加しレート下降(アホ)
典型90問星4が1つ解けていない
JavaSpring Boot本の履修が停滞中
収益記事乾燥機で書きたい
競プロ精選100問#14で停滞
数学ガール確率編を読み始めた
オライリーRust本ほんの少し読んだ
関数型JavaScript半分以上読んだ
Perlコードゴルフ的に興味あり
LINUCシェル芸人になりたい
けんちょん本の復習定着度が低い自覚あり
ネットワークの本積ん読に消化すべきものあり
MCP資格無料券がそろそろ期限

おわりに

プログラミング必修化の潮流から考えるに、授業で取り扱うという性質上、技能は競プロ的なものに寄っていく蓋然性は極めて高い。

すなわち、これからの若年層のありようは、簡単な入出力や文字列・数値の処理はお手のもの、主要なアルゴリズムは息を吐くように実装できるという世界観になるだろう(進学校に通うような層ではとくに)。

それこそ今のうちにそこそこ難しい問題も解けるようになっておかないと、20年後には今でいうところのロクにパソコン使えない管理職おじさんに成り下がり、なんのために生きているか分からない状態なってもおかしくない。

使えない管理職おじさんならまだいいが、そのポストもなく食い扶持に困るようなことだけは避けたいと強く思った今日この頃である。


  1. 私の通っていた某男子校では、次学期の教科書範囲を長期休暇の課題として各自で予習する(教科書レベルの内容は授業で取り扱わず直接演習に入る)という運用だったので、教科書を開かずに夏休みを終えた私に人権はなかった。