一発目のブログ投稿です!お手柔らかに!
Google ColaboratoryでAtcoder環境を完結させたのでその環境構築方法についてまとめました. pythonでAtcoderする方向けです.
※ AtCoder Beginner Contestでの使用を想定して作成しています.
できること
- Google ColaboratoryでAtcoderのテストケースをダウンロード・実行
- Google Colaboratoryからそのまま提出

作り方
手順1
こちらのgitに置いてるコードをローカルのPCへダウンロード
手順2
Atcoder_Key/config.py
にAtcoderのユーザー名とパスワードを入れる
USER_NAME = '{ここにusername}'
PASS = '{ここにpassword}'
例. ユーザー名がhoge、パスワードがfugaとすると以下
USER_NAME = 'hoge'
PASS = 'fuga'
手順3
Atcoder_Key/acc_login.sh
にもAtcoderのユーザー名とパスワードを入れる
expect -c "
set timeout 3
spawn acc login
expect '? username: '
send -- {ここにusername}\n
expect '? password: '
send -- {ここにpassword}\n
interact
"
例. ユーザー名がhoge、パスワードがfugaとすると以下
expect -c "
set timeout 3
spawn acc login
expect '? username: '
send -- hoge\n
expect '? password: '
send -- fuga\n
interact
"
手順4
google driveへ以下のようにのマイドライブ/atcoder
直下に配置(README
や.gitignore
は必要ないので無視)

※ もしディレクトリ構造を変更したい時はAC.ipynb
のパスを一番上のセルのパスに関する部分も変更してください
sys.path.append('/content/drive/MyDrive/atcoder/Atcoder_Key')
!bash /content/drive/MyDrive/atcoder/Atcoder_Key/acc_login.sh
これで環境の構築は終わりです!
使用方法
あとは上からポチポチしていくだけです
例 AtCoder Beginner Contest 233に出たい場合は、リンクのhttps://atcoder.jp/contests/abc233
最後のabc233
を以下のように入力して、解きたい問題を入力してポチポチするだけです. コードは# coding #
以下に書いてください.
※ 本番で使用する際は、コンテストが始まる前にセル1を実行しておき始まったあとにセル2を実行してください

もし変数などをノートブックでそのまま使いたい場合はマジックコードの%%writefile {PYFILE_PATH}
をコメントアウトして実行すれば使用できます.

下の方のセルではテストケースを検証してくれたり、最後のSUB_LANG
のセルを実行するとAtcoderへ提出してくれます. ここではpython3かpypyか選んで提出できます.
最後に
ごちゃごちゃするので基本colab上からは出力やコードは表に出ないように隠してます。仕組みについてはatcoder-cli
とonline-judge-tools
を使用して、シェルスクリプトをちょこちょこ書いてるだけです。
行き当たりばったりで作成したのでベストプラクティスではないと思います。もしこれよりいい方法がある方はTwitterなどで教えてほしいです。。Satoshi_SsSs_LOCAL_FLAG
とかの変数名は各自でお好みに変更してください。
Atcoderをやるぞーって思っていたら、Kaggleやその他の趣味に時間を吸われて全くできてないです(泣) 暇になったらAtcoderしたいな。。。