AtCorderのためのPython Docker環境を作る

AtCoder(アットコーダー)とは

日本発の競技プログラミングコンテストサイトです。競技プログラミングとは、プログラムを使って与えられた問題を解決することを競う競技であり、アルゴリズムとデータ構造の知識を駆使して解答を導き出します。AtCoderは、プログラマーやエンジニアがスキルを磨くためのプラットフォームとして広く利用されています。

C++, Python, Javaなどさまざまなプログラミング言語で挑戦することができ、自動でテスト・レーティング判定も行われますが、アルゴリズムを知っていないと高いレーティングは取れません。

競技プログラミングのサイトはいくつかありますが、有名なのは下記の通り

AtCoder

https://atcoder.jp/

日本発の競技プログラミングサイト。定期的にABC(AtCoder Beginner Contest)、ARC(AtCoder Regular Contest)、AGC(AtCoder Grand Contest)などのコンテストを開催

Codeforces

https://codeforces.com/

ロシア発の競技プログラミングサイト。多くのコンテストが開催され、豊富な問題集も提供。コミュニティが活発で、ディスカッションフォーラムも充実しています

HackerRank

https://www.hackerrank.com/

データ構造やアルゴリズム、数学、SQL、AIなど多岐にわたる分野の問題を提供。企業の採用試験としても利用されることが多いです。

TopCoder

https://www.topcoder.com/

古くからある競技プログラミングサイト。アルゴリズムの問題だけでなく、マラソンマッチやデザイン、開発のコンテストも開催しています。

Coderbyte

https://coderbyte.com/

初心者向けの問題から中級者向けの問題まで幅広く提供。企業のコーディングインタビュー対策に最適な問題も多い

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にて提出するのを推奨しています。

https://www.pypy.org/

使い方

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

最後に

快適な競技プログラミング環境にご利用ください!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です