2024年12月27日金曜日

頭の体操に競技プログラミングを

固まった頭をほぐすために競技プログラミングをおすすめしたいです。

JOIやAtCoderなどで知られる競技プログラミングですが、実際にチャレンジしてみると普段の業務とは毛色の違うコーディングをすることがあり新鮮で楽しいです。

アルゴリズム部門の例題を以下に紹介します。

例題1)

上記の問題はAtCoder Beginner Contest 353から抜粋したものです。

非常に単純な問題ですが、頭の体操にはもってこいじゃないでしょうか。


例題2)


上記の問題もAtCoder Beginner Contest 353から抜粋したものです。
少し難易度が上がっていますね、ですが問題文をしっかり読み解ければ基礎的な知識がある人ならすぐに実装できると思います。

(筆者は問題文の解釈を間違えて実装に20分弱かかりました(笑))


例題3)


またまたAtCoder Beginner Contest 353から抜粋です。

こちらはかなり難易度があがったように感じるのではないでしょうか。

必要な実装は長さA1...ANの正整数列をNまでAi+Ajを10^8で割った余りを加算していくような物になります。


最後に激ムズ問題を紹介します。

例題4)

AtCoder Beginner Contest 353の最後の問題です。

訳が分かりませんね(笑)

もちろん愚直に実装しようとするとメモリも実行時間も足りません(笑)

このような感じで簡単な問題から激ムズ問題まで幅広く遊べるので興味のある方はぜひチャレンジしてみてはいかがでしょうか。


以上がアルゴリズム部門の紹介でしたが、AtCoderにはもう一つのレギュレーションとしてヒューリスティック部門が存在します。

画像だと収まりきらないくらい情報量が多いので簡潔に文章で説明すると

問題として与えられた条件の「ハノイの塔」や「スライドパズル」のようなパズルゲームをどれだけパフォーマンスを出しながら実装できるか、というようなジャンルのものになります。

まさに「Heuristic」ですね。

こちらはチャレンジしたことがありません(今のスキルでは問題文を見てから実装するのに3日くらいかかりそうです、しかもパフォーマンスがでない)



普段の業務での実装に疲れた方やあまりコーディングをしたことがない方も気軽にチャレンジできるようになっているのでみなさんもぜひ。

0 件のコメント: