Atcoder Colab

Google ColaboratoryのみでAtcoderを完結させてみた件

一発目のブログ投稿です!お手柔らかに!

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-clionline-judge-toolsを使用して、シェルスクリプトをちょこちょこ書いてるだけです。

行き当たりばったりで作成したのでベストプラクティスではないと思います。もしこれよりいい方法がある方はTwitterなどで教えてほしいです。。Satoshi_SsSs_LOCAL_FLAGとかの変数名は各自でお好みに変更してください。

Atcoderをやるぞーって思っていたら、Kaggleやその他の趣味に時間を吸われて全くできてないです(泣) 暇になったらAtcoderしたいな。。。

TRPGと自作キーボードが趣味のどこにでもいる普通の大学生