skip to content
logo image Umamichang's Nest

Python+VScodeでAtCoderの環境構築する

/ 3 min read

自分用の備忘録。テストケースの自動ダウンロードと自動テスト、提出がすべてコマンドラインでできるようになる

環境構築編

  • (前提) windowsならwsl2内で作業する。pythonとnodeは適宜インストールしておく

  • Pythonとnpmにパスが通っているか確認

    Terminal window
    python3 -V
    Terminal window
    npm -version
  • 競技プログラミングの提出・テスト自動化を支援するツールたちをインストール

    Terminal window
    npm install -g atcoder-cli
    Terminal window
    pip3 install online-judge-tools
  • インストール確認、command not foundが出る場合は適宜ターミナルを再起動

    Terminal window
    acc -v
    Terminal window
    oj --version
  • accとojが連携できているか確認

    Terminal window
    acc check-oj
  • accとojそれぞれでatcoderにログイン

    Terminal window
    acc login
    Terminal window
    oj login https://beta.atcoder.jp/
  • accがテストケースをダウンロードする際、該当コンテストの全問題をダウンロードするようにする

    Terminal window
    acc config default-task-choice all
  • accのテストケースをダウンロードするディレクトリ名がojと異なるので、oj側に合わせる

    Terminal window
    acc config default-test-dirname-format test
  • テンプレートを作る

    Terminal window
    cd `acc config-dir`
    Terminal window
    mkdir <your-template-name> && cd $_
    Terminal window
    touch template.json main.py
  • template.jsonはこんな感じ。main.pyは空ファイルのままで大丈夫

    {
    "task": {
    "program": ["main.py"],
    "submit": "main.py"
    }
    }
  • 作ったテンプレートを設定する

    Terminal window
    acc config default-template <your-template-name>
  • 作業フォルダと仮想環境を作る

    Terminal window
    mkdir <new-folder> && cd $_
    Terminal window
    python3 -m venv venv
    Terminal window
    source venv/bin/activate
  • AtCoderのサーバー上に入っているPythonのライブラリたちをローカルでも使えるようにする

    Terminal window
    touch requirements.txt
  • requirements.txtの中身

    # https://img.atcoder.jp/file/language-update/language-list.html
    numpy == 1.24.1
    scipy == 1.10.1
    networkx == 3.0
    sympy == 1.11.1
    sortedcontainers == 2.4.0
    more-itertools == 9.0.0
    shapely == 2.0.0
    bitarray == 2.6.2
    PuLP == 2.7.0
    mpmath == 1.2.1
    pandas == 1.5.2
    z3-solver == 4.12.1.0
    scikit-learn == 1.3.0
    cppyy == 2.4.1
    # ここまではPyPyでもPythonでも使えるやつ
    # ここからはPythonだけで使えるやつ、適宜消してね
    ortools == 9.5.2237
    setuptools == 66.0.0
    torch == 1.13.1
    polars == 0.15.15
    lightgbm == 3.3.1
    gmpy2 == 2.1.5
    numba == 0.57.0
  • requirements.txtを参照してインストール

    Terminal window
    pip3 install -r requirements.txt
  • ac-library-pythonはpipで入らないからGitHubから持ってくる

    Terminal window
    pip3 install git+https://github.com/not522/ac-library-python
  • エイリアスを設定

    Terminal window
    echo "alias ojt=\"oj t -c 'python3 main.py'\"" >> ~/.bashrc
    Terminal window
    echo 'alias accs="acc s -- main.py --language 5078 --yes --wait 1"' >> ~/.bashrc
    Terminal window
    source ~/.bashrc

環境構築(完)

実際に使ってみる編

  • 試しに解いてみる

    Terminal window
    acc new abc300 && $_/a
    Terminal window
    code main.py
  • 手元で実行する場合

    Terminal window
    python3 main.py
  • 自動テスト

    Terminal window
    ojt
  • 提出

    Terminal window
    accs
  • 次の問題を解く

    Terminal window
    cd ../b && code main.py