「楽しく競プロを遊びつくそう」という色変記事(緑になりました~!)

初記事・色変です!(やった~!)

「英国に行きたい!」と思った結果海外受験真っ最中のあぴ (@Apiros3)です。

多忙に追われる現実からの息抜きのためにC++と競プロを続けてはや2ヶ月、入緑したので何か形を残すために記事を書くことにしました!

入緑の図(コンテスト初参加からは1か月半くらいでした!)

 

話したいこと

競技プログラミングには、様々な楽しみ方があると思います。

そしてこれは自分の解釈なのですが、より長い間、より密度のある楽しみ方をした人が「競プロ」をネットゲームとして最高に嗜めているのかな、と思っています。

ネトゲ廃人様の賢明なお言葉

 

レートを上げることを目的に学び、精進を積み重ねて色変する方もいますが、この記事ではそれとは別の角度から競プロを楽しみ、レートもついでに伸ばす、という考えについてお話していきます!(つまり自分が今のところ競プロのここが楽しい!って思ったことについて語るだけの記事です)

 

 

自分なりの競技プログラミングの楽しみ方

自分にとって、競技プログラミングの一番楽しい部分を簡潔にまとめると、

「自分にとって絶妙な難易度の問題を、ACする」

ことだと思っています。

ついでに言うなら、考察部分で「え!?この解法天才じゃん!」って自分に思える問題だとより楽しみが増します(ただ、解説に自明であるかのように書いてあることがしばしば…w)。

考察が合ってると確信する瞬間

そして、これをレートを賭けて挑んでいるコンテストの時間内にACできる瞬間が、もう言葉で表せないくらい楽しくて大好きです。脳内麻薬で溢れます…!!

テストケースが灰色のWJのまま進んでいき、ACが近づいてくるのを実感する瞬間、難しい問題ほど緊張するからこそ、ACした瞬間が余計嬉しいです。

脳汁ブシャーの図

そんなこんなで、自分の競プロの一番の楽しみ方は、レートに集中したものではなく、とにかく一問一問を楽しみ、ACできる瞬間を大事にする、というものです。

実は一度色変が見えたタイミングでレートを気にして参加したことがあったのですが、緊張するし、順位も気になって問題に集中し辛かったです…

パフォーマンスが揺れすぎてウズベキスタンの国旗みたいになってる図

楽しみ方はそれだけじゃない!

解ける時以外にも競プロの楽しいは色んな場所に潜んでいます!

例えば、やっぱり難しい問題もあるので、解けない時だってあります。その時の「悔しい!」という気持ちと、しっかり解説から学ぶことで次は解けるようにする、という成長のプロセスを体感することも楽しいです!

知らないアルゴを使わないと解けない問題に挑む様子

 

そしてたまには今集中しているアルゴから離れて、寄り道程度に少し気になっている新しいアルゴリズムや、勉強してみたいと思っていたものに触れるのもいいですね♪

最近だと、

・分数の逆元

・確率的な素数判定アルゴリズム

みたいなものに触れてみたりしました!

発想が凄すぎて、アルゴリズムの凄さに感動しながら学んだりするのってやっぱり楽しいですね。

↑ミラーラビンについて教えてもらった時、教えてくれた側まで関心している様子を完璧に捉えたツイート

 

他にも、自作ライブラリを作ってみたり、出力までの時間を図るようちょっとした手入れをする時間も凄く面白かったです。

こういうちょっとした部分も含んで、競プロって楽しめるものだと思っています。(その点、実は初心者であるほどこれから楽しめる範囲が広いので得かも…!?)

後は色んな言語に触れてみる機会でもあります!自分の場合、名前が好きで.bf(Brainfuck)という言語に触れてみました!(凄く頭が痛くなる仕様の言語ですが、解ける問題に遭遇した時はパズルを解いてる感じが楽しい言語です!)

.bfで"Hello World!"と出力するコード

 

あとは、何問か頭の中に保存しておいて、移動時間などで考察する、みたいなのも一日中遊んでる気分になってとっても楽しいです!

 

なので多分、自分にとって競プロが何かをまとめると、以下のようになるのかな、と思っています!

とにかく、競プロって本当にどの部分を取っても楽しいんですよ!それは学びの部分だったり解いてる瞬間だったり、気まぐれ程度に覗いてみたアルゴリズムに感動する瞬間だったり、どれも本当に大好きです!(ただ今は、ここにレートや競技感を加えすぎると疲れちゃうのかな、って思っています)

 

でもレートが気になる、というあなたへ!

この2か月で痛感したのは「レート≠実力」という点です!

レートが下がったとしても、新しい問題が解けていたら確実に実力はあがっていて、まだレートにそれが反映されていないだけな気がします。レートが伸び悩んでいても、新しいアルゴリズムを学んだり、Diffが低い問題でも初めてのACなら、確実に実力は上がっているし、ACできる可能性が広がっている分競プロを楽しめる範囲も広がってる、ということです!(すると、長期的にレートはついてくる!というのが持論です)

 

なので、「色変するために何をやったか」と言われると、とにかく楽しい難易度の問題を解きまくって、新しいアルゴリズム武装する、の繰り返しです!

本当にそれだけなの?って思った人へ @microkentsさんの画像です

正直、今のところ息抜き目的でやってる競プロなので、これくらいのゆっくりと気まぐれに楽しみながら学べる感じが一番今の自分に合ってる気がします。

 

というわけでもっと競技プログラミングを楽しむ方法(おふざけ)

拡張機能で遊んでみる

皆さまはGreasyforkでどのような拡張機能を使っていますか?レートPredictorだったり、難易度を表示してくれる機能など様々ありますが、個人的なおすすめはこちら!

AtCoder-ngtkanaResult

ACやWAが全てながたかなさんの言葉になります…!

たまにオンにするのが楽しいプラグイン

そして、コード内を少しいじれば自分の好きな言葉に変えることも出来るので結構純粋に好きな拡張機能です!

 

とんでもない問題を解いてみる

「なにこれ?」ってなるような問題を解いてみたい方はぜひこちらなどをお試しください!

J - Go to Heaven

こういうコンテスト、いいですよね~!(次ある時参加してみたいな…!)

 

エンカしてみる

競プロerとのエンカ、超!楽しいです!(本当にいい方達に出会えたんだな、という気持ち)

多方面で色んな方たちと繋がって、直接会って話すの本当に楽しいです!あと美味しいご飯を食べる言い訳にもなったりする…!

20歳未満なので自分は飲めないのですが、みんなが徐々に酔っていくのを見るのが結構好きで、その状態で競プロの問題を解こうとするのを見てるのとか楽し過ぎました(ちゃんとほぼみんな解けるのが凄すぎる)。あともしかしたら自分…場酔いし易いのかも…?

 

謎の持ちネタを作る

C++に質量はありません」(以下割愛)

ボボボーボ・あぴの日々

最後に

競技プログラミングはその名前の通り、競うものです。ただ、個人戦の競技は己との戦いでもあります。自分を高める以上、そのプロセスや出会いなど全て丸ごと楽しんだ方が得なのでは!?と思ったりしたのでした。

息抜きの気分で、楽しく学んでいくのが成長するにおいて重要なのかな、と思ったりした入緑記事でした。成長速度は人それぞれなので、気長に楽しい競プロライフを送りましょう!

最後に、AHCのおかげで銅diffをACしたことになってる図

 

P.S.競プロに興味を持つきっかけとなったE8さん、そして「Ratedで出ましょう(圧)」と押してくれた(?)ゆうさん、オットセイのしのさん、そしてここまでのめり込める日々を作ってくれたTwitterやごーすとたうんのみなさまに感謝です!

 

ご精読ありがとうございました~!!

 

参考:

作り方が分からなかったので後から足します!

ふにゃーんとしてたら海外にぶっ飛んでた話(1回目)幼少~小学校前半編

みんなが半生のブログを書いているのと、直近の記憶が薄れる前にどこかに記録しておきたい!と思ったので書くことに。

海外に2回ぶっ飛んだことを軸に、日本人としての自分のアイデンティティを探したりするお話です。

 

 

幼少期

大阪府大阪市(のどこか)で爆誕。もちろん記憶にない。

幼稚園は大阪の実家の近くのところに通っていたが、当時何かを教わったという記憶はすっぽり抜けてしまっている。

この頃は断片的な記憶がたくさんなので、いくつか紹介してみたいと思う。

 

初骨折:

椅子の上にタオルをひいた状態でその上を飛び跳ねていたあぴ(3歳)、なんと滑って落ち、右手を骨折。動転しすぎて折れたことに気づかなかったらしいが、両親が異常を察知して病院へ⇒判明。今でもその椅子は食卓に置いてあったりする。最近あぴ(19歳)がここから落ちたらどうなるんだろう?と想像してみたりしたが、当時より悲惨なことになりそうだったので椅子の上にタオルをひいた状態で飛び跳ねたりしないでおこう、と自戒した。

 

楽器で失敗:

幼稚園の演奏(?)の一環で合わせシンバルを使用することがあったあぴ(推定4歳)、体の近すぎるところで叩いてお腹を挟み悶絶。以後10年ほどパーカッションに触れられないトラウマが芽生える。

 

スポーツの才:

あり得ないくらい球技に才能がなかった。サッカーをN年間やって、リフティング4回が限界だった。

また、尋常じゃないほど体が硬かった(今はもっと硬く、悲しい)。以後これが原因でスポーツ関連の怪我が多発する。

 

小学校編:

市立の小学校に進学。

給食美味しいな~とか、天井高いな~!とか思ってた。

原爆の資料を持ってこられて、戦争の恐ろしさを教えられたりした。平和って本当に幸せで凄いことなんだな~とか思った記憶がかすかにある。ふにゃーんの起源は多分この辺から。

ここでなんと1学期過ごしたのち、親の都合でアメリカのイリノイ州(合衆国大陸の真ん中の北らへん)に急遽転向することに。日本中探してもこんなにランドセルをコスパ悪く使った学生はいなさそう。親が様々な活動に関わってたこともあり、色んな方々に見送っていただいた。自分は特に幼馴染と別れるのが辛かった記憶が残ってる。

米国へ

イリノイ州、シカゴ郊外の公立の小学校に通うことに。ついでに帰国した時のことを考えて、土曜日は日本の補習校にも通うことになった。この段階で話せた英語は"Green"と"Hello"のみ。結構詰んでた。

そこで親(神)に魔法の言葉"Can I go use the restroom"を教わり、いざ小学校へ。

 

小学校とアメリカについて少し:

徒歩3分程度の場所に学校があったのにも関わらず、米国の治安の都合上、通学は毎日親の送迎が必要だった。若かりし頃の自分はあまりこの点を疑問視することなく、銃社会のことも無心と受け入れていた。今考えれば親に結構見せられる情報を限定されていたんだろうな~と思うし、それについてはとてもありがたく思ってる。

というのも、米国スーパーのチェーン店Walmartは普通に店頭で銃を売ってるし、米国は人より銃の方が多い国だったりする。隣の地区では銃撃事件が発生したり、「ロックダウン」という銃撃犯が校内に侵入してきた時のための訓練、など日本ではありえないことが盛りだくさんだった。(おかげで異文化に対する理解を育むことができて、以後海外で日本の非常識を見かけてもあまり驚かず、むしろ受け入れるようになった)

 

本筋に戻りまして…

小学校ではもちろん通常の授業についていけず、特別支援のクラスに入ることになった。周りも小学生だったことが功を奏し、簡単な単語から教わることができて助かっていた。また、自分より数か月早く入った生徒の一人に日本人の方がいて、いつも分からない単語や文章があれば通訳してくれる、というとてもありがたいことをしてもらっていた。こういう些細な所から「日本語」という日本特有の産物を通じて、自分は少なからず自らのアイデンティティに漠然と「日本人であること」というものを組み込んでいたのだと思う。残念ながら当時通訳してくださった方と連絡はもう取れない(というか当時は携帯なんて持っていなかったので連絡先を交換したこともない)が、もしいつか会うことがあったら心の底からお礼したいと思う。

色々なサポート体制があっても英語だけの環境というのは酷くしんどいもので、常に逃げ出したい、日本に帰りたいと思っていた。ここで、†魔法の言葉†の出番がやってきた。元の日本の公立小学校と異なり、アメリカでは授業中でもお手洗いを使うことが許されていた。そのため、†魔法の言葉†とは自分にとって何も理解できない空間から5分程度逃げ出すことのできる、最高の言葉だった。一コマで4,5回使うなどして乱用した結果"Can I go use the restroom?"に"No."と言われ、逃げ出せないよう閉じ込められたりしたが、学習速度が飛躍的に向上したので、今見返してみればよかったのかもしれない。

10ヶ月でなんとか日常会話レベル(笑)まで英語力が成長し、なんとか通常の授業にいれてもらえることになったのだが、見返してみるとここまでの1年は未だに生きてきた中で最も苦しく、虚無な年だったと自信を持って言える。ここで半分強制的に鍛えられた忍耐力は今でも結構重宝しているので、ありがたい恩恵もあったりした。

そんな自分が耐えられたのは日本語で授業を受けることのできた土曜日の補習校と、アメリカのアニメ専門チャンネルCartoon Network」の二つのおかげだったと思う。前者は自分を理解してくれる人のいる場としての安心感、そして後者は英語を継続的に学ぶためのモチベーションになっていた。そういう経緯から人一倍日本という国に対しての愛着心が沸いたし、特殊なルートではあるがアニメも好きになった。

そんなこんなでやっと通常の授業にいれてもらえたあぴ(6歳)だったが、ここの授業を通じて将来に多大な影響を与えたものがいくつかあったので少し紹介したい。

SHR(教室内の朝礼みたいなやつ)

米国の国家を毎朝歌う、というものがあった。愛国心を芽生えさせるための取り組みだったのだろうが、海外からやってきたばかりの自分にとってはよくわからなかった。むしろ、日本人としての自分はどこにいるのだろう?私のアイデンティティとは?とよく自問していた気がする。

算数:

補習校って凄くない?って思うくらい算数力が育っていた。毎週土曜日に1時間やっていた日本の教育課程の算数の方が、現地校で週に数回あった算数の授業より濃く、早かった。おかげで謎に算数の自信がつき、英語力がまだ現地生ほど得意じゃなかったことと相まって、「私は理系なんだ!」と錯覚するようになった。

美術:

正直一番楽しかった。言語という障壁がなくて、他のなにより自由だったのが印象深い。特に才能があったわけでもなく、追及しようと思うには至らなかったが、美術鑑賞というものが好きになった。

歴史:

自分が米国で受けた歴史教育は日本のそれと結構異なる。特に第二次世界大戦核兵器に関する教育指針は、小学校での取り組みということと相まって、要するに「アメリカが世界を平和に導いた」「日本に対する核兵器は必要悪」というものいなっていた。今思えば必須項目でさえなかったこれを日本人のいる教室で教えたことに疑問を持ったりもするが、当時の自分はそれよりも内容自身に揺さぶられ、日本人として自分は世界でどういう立ち位置なのかわからなくなってしまったし、言語化できない罪悪感を抱えた記憶がある。物事を両側の視点から見ないといけない、と教わった。

体育:

相変わらず球技の才能がなくて悲しかった。学校外で水泳も試してみたが、水が冷たすぎてやめてしまった。

 

勉強は、算数がちょっとだけ平均以上、英語は平均以下、それ以外は平均よりちょっとくらい下だったと思う。共通試験みたいなのがあって、それは下位35%くらいだったと思う。日々英語の勉強をしていたため苦手意識が芽生えたし、あまり好きではなかった。

 

同時期に、東日本大震災が起きた。時差の関係で発生から数時間経った現地時間の朝にニュースで目の当たりにし、ひどくショックを受けた記憶がある。どのチャンネルに切り替えても同じニュースでもちきりで、親の動揺と津波の映像を見た若かりし頃の自分は「日本が沈んでなくなっちゃった」と思ったりした。その日の記憶はここで終わってしまっている。

ゆうさんの話を読んでいながらも少し思ったが、日本人の大多数が経験している事象を経験せずに「日本人」というバッジを身に着けて生きるということは妙に歪で、不思議な感覚である。まるで、偽物であるかのような気持ちだった。もちろん米国で生まれ育ったわけでもないので現地人としての気持ちもそれほどなく、時より自分自身の居場所を失ってしまいそうな恐怖心に襲われた。当時小学生だった自分はこれを上手に言語化することができず、長い間もやもやが続いていた。

 

混乱に溢れた海外ぶっ飛び経験だったが、思い返せば楽しいこともたくさんあった。

両親が旅行好きだったこともあって、3年間の滞在で50州中49州回れたし(50州目は帰国後旅行でハワイに行き制覇)、そこで様々な体験をすることができた。

ボストンで食べたクラムチャウダー。色んな国立公園で見た源泉、星空、そして峡谷。移動の途中に食べた数々のあり得ないサイズのバーガー。朝起きたら身長の倍くらい玄関の前に積もっていた雪。カルフォルニアまで52時間かかる電車。自然の連ねる数々の絶景。ニューヨークの景観。近道しようとしたらワニのいる川の隣を走って焦ったり、車に鹿が追突したり、地平線を見渡す限りの荒廃の空間、など広大な土地ならではの経験を得ることもできた。

思い返してみればどれも大切な思い出だ。海外の長期滞在なんて初めてで大変だったはずなのに、そんなふしを見せず、幸せな思い出をたくさん作ってくれた両親には感謝してもしきれない。

 

そんなこんなで生きることに必死だったりたまにのんびりしてるを繰り返していたら3年ちょいほど経過していて、親の転勤も終わり、大阪に帰国することになった。

帰国する少し前、親に「苦労して培った英語をこのまま維持したいか、それともどちらでもよいか」とハメ技みたいな質問をされ、もちろん「維持したい!」と答えた私は英語で授業を受けられる私立小学校に突っ込まれることになった。様々な弊害(あとで多分説明する)もあったが、今思えば両親による英断だったのだと思う。

 

そうして一回目のぶっ飛びが終わり、帰国することに。振り返っていて思い出したのだが、親の会社の都合での転勤だったので最後の帰りの飛行機はなんとビジネスクラスだった。正直過去の自分に言うのもなんだが、羨ましすぎて泣きそう…当時の小さい体には十分以上のスペースだったろうに!今の私と変わってくださいお願いします。

 

この辺で一回切ります!

次のぶっ飛びまで、8年。

ご清聴ありがとうございました~!!