原文: The 10 Most Popular Coding Challenge Websites [Updated for 2021]
コードを学習する際にコーディングチャレンジを解くことは、スキルを向上させる重要な手段です。いろいろなタイプのチャレンジやパズルを解くことによって、課題をより良く解決できる人になったり、プログラミング言語の複雑さについて学習したり、新しいアルゴリズムを学習したり、仕事の面接に備えたりできます。
人気のあるコーディングチャレンジウェブサイトについて、それぞれが提供しているものを短く説明しながら、これからお伝えしていきます。
1. TopCoder
TopCoder は、オンライン競技プログラミングのための独自プラットフォームのひとつです。オンラインで直接、自分の力でコードエディタを用いて解くことができる、過去のアルゴリズムのチャレンジの一覧を TopCoder は提供しています。よく知られている Single Round Match は、毎月数回ほど特定の時期に開催されており、他の人といかに早くチャレンジを解いて最高のスコアを取得できるかを競い合います。
TopCoder のトップランクのユーザーはとても優秀なプログラマーであり、プログラミングコンテストで定期的に競争しています。トップランクのユーザーである Petr Mitrichev 氏は、コーディング、コンテスト、アルゴリズム、数学などについて書かれている、Algorithms weekly by Petr Mitrichev というタイトルの、自身のブログを管理しています。
2. Coderbyte
Coderbyte は、200 を上回るコーディングチャレンジを提供しており、オンラインで直接、10 個のプログラミング言語のひとつを用いてチャレンジを解くことができます (こちらの例題をチェックしてください) 。チャレンジは、簡単なもの (文字列の中の、最も長い単語を見つける) から難しいもの (グラフの最大マッチングを出力する) にまで及びます。
また、Coderbyte は、アルゴリズムのチュートリアル集、入門ビデオ、面接準備コースを提供しています。HackerRank やその他の同じようなウェブサイトとは違って、Coderbyte では提供される公式の解答とは別に、他のユーザーが提供する解答が見れます。
3. Project Euler (プロジェクト・オイラー)
Project Euler (プロジェクト・オイラー) は、コンピュータサイエンスと数学の分野における、多くのチャレンジ集を提供しています。通常、そのチャレンジを解くためには、一連の各番号の直前にある番号の各桁の数字の合計を見つけるというような、巧みな数学の公式または方程式の解を、小さなプログラムを記述して考え出す必要があります。
このウェブサイト上では、エディタなどを用いて直接コードを記述することはできないので、ご自身のコンピュータで解答を記述し、その後解答をウェブサイト上で送信します。
4. HackerRank
HackerRank はアルゴリズム、数学、SQL、関数型プログラミング、AI (人工知能) などのような、さまざまな分野に向けたチャレンジを提供しています。すべてのチャレンジは、オンラインで直接解くことができます (こちらの例題をご覧ください) 。また、HackerRank はすべてのチャレンジへ、discussion と leaderboard を提供しています。ほとんどのチャレンジは、その詳細について説明し、解答を考え出すためのアプローチの方法について説明する editorial (解説)も備えています。ただし、その editorial は別として、HackerRank では他のユーザーの解答を見ることは今のところはできません。
HackerRankは、企業が主催するコーディングチャレンジを解き、申請書を提出して仕事に応募するユーザーに向けた機能も提供しています。
5. CodeChef
CodeChef は、何百ものチャレンジを提供する、インドで生まれた競技プログラミングウェブサイトです。そこでは、オンラインエディターでコードを記述することができ、スキルのレベルに応じてさまざまなカテゴリーに分けられた、チャレンジ集を見ることもできます (こちらの例題をご覧ください) 。CodeChef には、フォーラムに貢献し、チュートリアルを書き、コーディングコンテストに参加するコーダーの、大きなコミュニティがあります。
6. Exercism.io
Exercism は、52 種類に及ぶプログラミング言語で、 3100 を上回るチャレンジを提供する、コーディングチャレンジウェブサイトです。マスターしたいと思う言語を選んでから、すぐに自分のコンピューターで、コーディングチャレンジに取り組めます。(Exercism は、GitHub からダウンロードできる、独自のコマンドラインインターフェースをもっています) 。
Exercism が他のチャレンジウェブサイトと少しだけ違うところは、各チャレンジを完了した後で指導者と協力する点です。指導者は、解答をオンラインでレビューし、必要に応じて改善するのを手伝います。回答が承認され提出されることで、さらなるチャレンジが明らかになります。
7. Codewars
Codewars は、独自のコミュニティーによって提出され編集された、多くのコーディングチャレンジ集を提供しています。いくつかの言語の中からひとつを選んで、オンライン上のエディターで直接、チャレンジを解くことができます。ユーザーの解答だけでなく、各チャレンジに向けた議論も見ることができます。
8. LeetCode
LeetCode は、ポピュラーな競技プログラミングサイトであり、テクニカルな仕事の面接に備えるのに役立つ、190 を上回るチャレンジリストを提供しています。9 種類のプログラミング言語のひとつを選んで、オンラインで直接、チャレンジを解くことができます。他のユーザーの解答を見ることはできませんが、他のユーザーのコードと比較した場合に自分のコードはどのくらい処理が早いのかといった、独自の統計量が解答へ提供されます。
LeetCode は、特に面接に向けた準備のための模擬面接セクションも用意していますし、コーディングコンテストを主催したり、特定の問題をより理解するのに役立つ記事のセクションを用意しています。
9. SPOJ
Sphere Online Judge (SPOJ) は、20,000 を上回るコーディングチャレンジを提供している、競技プログラミングサイトです。SPOJ では、オンラインエディターを使用してコードを提出できます。また、SPOJ は独自のコンテストを主催していますし、コーディングチャレンジについて議論をする場をユーザーのために用意しています。とはいえ、SPOJ には現在、他のウェブサイトが提供しているような公式の解答または解説はありません。
10. CodinGame
CodinGame では、他のウェブサイトとは少しだけ違って、単にエディターの中でコーディングチャレンジを解く代わりに、オンラインで直接プレーするゲームのためにコードを記述するということに、実際に参加します。現在、提示されたゲームの一覧をこちらで見ることができ、その例のひとつがこちらです。ゲームは、問題の説明とテストケース、そして 20 種類を上回るプログラミング言語のひとつでコードを記述できるエディターを備えています。
上記の代表的な競技プログラミングウェブサイトとは異なりますが、CodinGame も、チャレンジを解いたりコンテストに参加することを楽しむプログラマーの間で人気があります。
このリストは、自分自身で各ウェブサイトを使用した経験、Google での検索結果、Quora の投稿、こちらの記事などを基に作成しました。また、いくつかのフォーラムやr/learnprogrammingのようなサブレディットに頻繁にアクセスして、そこにいるユーザーがよくどのウェブサイトを薦めているかを確認しました。免責事項: 記事の原文の著者は、上記のウェブサイトのひとつである Coderbyte に勤めています。