山pの楽しいお勉強生活

勉強の成果を垂れ流していきます

AtCoder用Python環境を作った

概要

最近AtCoderを始めたのでPython用の環境を作りました。 割といい感じにできた気がしましたのでTemplate Repositoryにしています。これから始める方、AtCoder上で書いている方などは是非試してみてください。

一方、まだ私自身が使い込んでいないので、既に環境ある方やAtCoderをある程度やり込んでいる方には不満があるかもしれません。 何かありましたら IssueTwitter などでご連絡頂けたら助かります。

github.com

導入ツール

  • devcontainer
    • VSCode, Git, DockerさえあればOK
  • black
    • 自動フォーマット
  • online-judge-tools
    • VSCode上でテストを実行
  • atcoder-cli
  • atcoder-python-snippets
    • AtCoder用のスニペット
    • あまり洗練されていないので、独自の関数をテンプレートファイルに記載しています
    • 独自のスニペットを追加したい場合には本記事末尾のQAを参照

環境作成(ローカルのVSCodeの場合)

※この文章でわからなければ README を参照してください。

環境作成(GitHub Codespacesの場合)

f:id:yamap_55:20210116171613p:plain
Open with Codespaces
f:id:yamap_55:20210116171759p:plain
New codespaces

※特にCodespaces用の設定はしていないので不具合があったら教えてください

回答までの流れ

VSCode内のターミナルでコマンドを実行します

  1. ログイン
    • acc login
    • oj login https://atcoder.jp/
  2. contestID を取得
    • https://atcoder.jp/contests/abs の場合、 abs
  3. ディレクトリ作成(問題を選択)
    • acc new ${contestID}
    • 例: acc new abs
  4. 回答する問題のディレクトリに移動
    • cd {contestID}/{問題}
  5. 回答を作成
    • main.py に回答を記載
  6. 回答をテスト
    • ojt
    • oj t -c "python main.py" と同じ
  7. 回答を提出
    • acc submit
    • acc s と同じ

使用例

acc new abs
cd abs/practicea/
vi main.py
ojt
acc s

QA

テンプレートファイルを変更したい

templates/py/main.py を変更してください

独自のスニペットを追加したい

  • .vscode/python.code-snippets を作成し、以下のように記載する
{
  "input number": {
    "prefix": ["input-n"],
    "body": ["import sys\nn = int(sys.stdin.buffer.readline())"],
    "description": "input number."
  }
}