AtCorderのためのPython Docker環境を作る
AtCoder(アットコーダー)とは
日本発の競技プログラミングコンテストサイトです。競技プログラミングとは、プログラムを使って与えられた問題を解決することを競う競技であり、アルゴリズムとデータ構造の知識を駆使して解答を導き出します。AtCoderは、プログラマーやエンジニアがスキルを磨くためのプラットフォームとして広く利用されています。
C++, Python, Javaなどさまざまなプログラミング言語で挑戦することができ、自動でテスト・レーティング判定も行われますが、アルゴリズムを知っていないと高いレーティングは取れません。
競技プログラミングのサイトはいくつかありますが、有名なのは下記の通り
AtCoder
日本発の競技プログラミングサイト。定期的にABC(AtCoder Beginner Contest)、ARC(AtCoder Regular Contest)、AGC(AtCoder Grand Contest)などのコンテストを開催
Codeforces
ロシア発の競技プログラミングサイト。多くのコンテストが開催され、豊富な問題集も提供。コミュニティが活発で、ディスカッションフォーラムも充実しています
HackerRank
https://www.hackerrank.com/
データ構造やアルゴリズム、数学、SQL、AIなど多岐にわたる分野の問題を提供。企業の採用試験としても利用されることが多いです。
TopCoder
古くからある競技プログラミングサイト。アルゴリズムの問題だけでなく、マラソンマッチやデザイン、開発のコンテストも開催しています。
Coderbyte
初心者向けの問題から中級者向けの問題まで幅広く提供。企業のコーディングインタビュー対策に最適な問題も多い
PythonでAtCorder環境を作ろう
自分のローカル環境に影響させたくなかったので、Dev ContainerにてDocker環境を作成いたしました。
https://github.com/ateliee/atcoder_python
参考にしたのはgomatofuさんの下記のリポジトリ
https://github.com/gomatofu/atcoder_python
Dev ContainerはVSCodeなどほとんどのIDEにてプラグインが提供されているので、下記を参考に利用してください。
https://zenn.dev/conecone/articles/ab8d71d81e64bb
AtCorderローカル環境の特徴
環境構築はDev Containerにて自動で作成されるのですが、コンテストの問題などもatcorder-cliにてダウンロード・アップロードもCLIにて反映されます。
環境はPython3環境にて構築されていますが、通常通りPythonにて提出すると実行速度が遅く、上位の問題などはACが取れません。
どちらも利用できますが、PythonではPyPyにて提出するのを推奨しています。
使い方
Dockerを立ち上げて、コンテナにsshしたらまずはAtCorderへのログインをしておいてください。
AtCorderのログイン情報を入力するとセッション情報が保持され、次回以降は入力しなくて良くなります。
# ログイン acc login
コンテストを始めるには下記の様に問題をダウンロードしてください。
「abc001」などの受けたいコンテストIDはURLの一部を抜き出すと良いでしょう。(例: https://atcoder.jp/contests/abc357)
# コンテストダウンロード acc new abc001
実行は下記の様になります。
main.pyにはtemplate(.devcontainer/template/python/main.py)を元にしていますので、お好きにカスタマイズすると
次回以降ダウンロードする際に初期テンプレートが利用されます。
cd abc001/a # 実行 python3 main.py # テスト実行 attest # 提出 atsb
最後に
快適な競技プログラミング環境にご利用ください!