AtCoderとは?
AtCoderとは、プログラミングを用いて戦う頭脳スポーツ「競技プログラミング」のコンテストサイトの一つです。 競技プログラミングとは?
スポーツや娯楽として楽しみ競い合うことを主軸としておりますが、同時にプログラミング能力や論理的思考力などが付くため、ITエンジニアの一部の職などにおいて、AtCoderでの実力を評価されることがあり、「役に立つスポーツ」や「役に立つネットゲーム」としての側面があります。 AtCoderの活用を考えている企業の方へ
AtCoderの競技内容
AtCoderには、Algorithm Contest, Heuristic Contestの2種類のコンテストがあります。
Algorithm Contest
AtCoder Beginner Contest, AtCoder Regular Contest, AtCoder Grand Contestなどが、このコンテストに該当します。与えられた問題を解決するプログラムを、早く正確に提出し、その正解数と順位を競うコンテストです。簡単な問題では、ただ指示通り問題を解決するプログラムを書けば良いですが、難しい問題においては、アルゴリズムを工夫する必要があります。
アルゴリズムの工夫、というのは、例えば以下のようなものです。
同じあみだくじを、1000個並べて、どこにたどり着くかを考えてみましょう。あみだくじが一つであれば、線をたどってAの位置に着くことがすぐにわかります。同様に、二つであっても、線をたどればFの位置にたどり着くことが分かります。しかし、これが1000個になると、人間にはそう簡単には解くことが出来ません。
コンピュータがこの問題を解こうとすると、実は1000個の線をたどることは一瞬で出来てしまいます。しかし、これが100000000000個などになると、いくらコンピュータでも、非常に時間がかかってしまいます。
この問題は、工夫すれば、実は人間でも一瞬で解けてしまいます。Cからスタートした時に、順番にたどると、C→A→F→C→A→F→……と、C,A,Fの3つでループすることが分かります。つまり、1000回あみだくじをたどるということは、実は、3で割った余りである1回たどるのと同じ結果になるため、答えがAであることが分かります。
コンピュータは非常に高速ですが、その速さにも限界があり、多くの問題はそのままコンピュータで解くことが出来ません。そのため、コンピュータにはやく高速に計算させるため、こうした計算過程を工夫するのが、競技プログラミングで競い合っている「アルゴリズム」と呼ばれるものです。こうしたアルゴリズムをプログラムで表現し、成績を競い合うのが競技プログラミングです。
AtCoderは、国内の競技プログラミングサイトの中で、最も参加者が多く、ハイレベルなコンテストサイトです。約20万人がコンテストサイトに登録し、小学生から社会人まで、毎週1万人ほどのユーザが、リアルタイムのコンテストに参加しています。初心者に優しい簡単な問題を含む、約5000問の過去問や、豊富な解説などの教材が存在するため、誰でも気軽に挑戦できます。
Heuristic Contest
AtCoderで2021年からレーティングを付け始めた、新しいタイプのプログラミングコンテストです。Algorithmコンテストでは、解けた/解けないを競っていましたが、Heuristicのコンテストでは、どれだけ改善できたかを競います。
例えば、100個の点をたどって帰ってくる経路について考えてみます。
1つ目はランダムにたどったもの、2つ目は少し賢くたどったもの、3つ目はとても賢くたどったものです。Algorithmコンテストでは、最短経路以外は不正解でしたが、Heuristicコンテストにおいては、このどれもが正解となります。それぞれに点数がつき、3つ目の解が最も高い点数を得られる、という形になるわけです。このように、最適解を出すのが難しい問題において、できるだけ良い解を探して制限時間以内に出力するのが、ヒューリスティックコンテストになります。