atcoder-cli のインストール、初回作業、設定例を示す。
AtCoderのコードをローカルのVSCodeで書き、デバッグし、提出するまでの流れを補助してくれるコマンドラインツール。
この記事が参考になる。
atcoder初心者こそ環境構築しよう!(atcoder-cli,online-judge-toolsのインストール、使い方) - Qiita
MacOSこれを書いている今は Monterey を使用中VSCodeインストール済み、Python関連設定済みhomebrewインストール済みPythonインストール済みNode.jsインストール済み
atcoder-cliを使う場合、online-judge-toolsも一緒にインストールするとよい。
online-judge-toolsのインストールと確認ojはonline-judge-toolsのコマンド名。
$ pip3 install online-judge-tools
$ oj -hatcoder-cliのインストールと確認accはatcoder-cliのコマンド名。
$ npm -g install atcoder-cli
$ acc -hコマンドから出力されるメッセージは省略。
acc…atcoder-cliコマンド名oj…online-judge-toolsコマンド名
$ acc check-oj
online-judge-tools is available. found at:
/Users/username/.pyenv/shims/oj$ acc login
? username: aromarious
? password: [hidden]
OK
$$ oj login https://atcoder.jp/
Username: aromarious
Password:
$まず現在の設定を見ておく。
$ acc config
oj-path: /Users/username/.pyenv/shims/oj
default-contest-dirname-format: {ContestID}
default-task-dirname-format: {tasklabel}
default-test-dirname-format: tests
default-task-choice: inquire
default-template:oj-path
ここの設定はacc check-ojコマンドを発行すると設定される。(それぞれの環境によって違う)default-ナンチャラ-dirname-format
問題取得時の各ディレクトリの名前の設定。コンテスト、問題、テストデータのディレクトリを作る時にどんな名前で作るかを設定。デフォルトで構わない。default-task-choice
コンテストを取得する時に、その中に問題(タスク)が複数ある。どれを取ってくるか設定する。inquire…メニュー形式で問い合わせてくる(このオプションのみ対話形式)all…全タスクを取得するnone…タスクは取ってこない(コンテスト情報を取得し、コンテスト用ディレクトリを作成するだけ)rest…未取得のタスクを全部とってくるnext…未取得のタスクのうち、一番若い番号のものをとってくる。
$ acc config-dir
/Users/username/Library/Preferences/atcoder-cli-nodejs
$ cd $(acc config-dir)
$ pwd
/Users/username/Library/Preferences/atcoder-cli-nodejs
↑ここのディレクトリをこのリポジトリに置いた。
/Users/username/Library/Preferences/atcoder-cli-nodejs
├── config.json … acc config で確認・設定できる
├── python3/ …テンプレート名でディレクトリを作る。
│ ├── template.json …解答コード用のファイルはこれ、提出用のファイルはこれ、という設定をする
│ └── solve.py …解答コード用のファイルを作るときの原本
└── session.json …ログイン情報が入っているのでいじらない
oj test で取得したテストケースを実行するが、その時にスクリプトファイルを直接実行してもらうために
- she bang (1行目に
#!/usr/bin/env python)を書く - ファイルに実行フラグを立てる(
chmod +xしておく) ということをしている。
ojのコマンドラインオプションで-c "python solve_ナンチャラ.py と明示指定する場合はこの小細工は必要ない。
2022-08-13: ↑現在はこちらの設定を採用し、she bang と実行フラグは削除して運用している
$ acc new abc081これを実行すると、次のディレクトリやファイルができる。
abc081/ …コンテスト用ディレクトリ
├── a/ …タスク用ディレクトリ
│ ├── solve_abc081_a.py …解答用ファイル
│ └── tests/ …テストデータ用ディレクトリ
│ ├── sample-1.in
│ ├── sample-1.out
│ ├── sample-2.in
│ └── sample-2.out
└── contest.acc.json …このコンテストの取得状況等
VSCodeなどで好きに書く。
$ cd タスク用ディレクトリ
$ oj test -c 解答用ファイル名 -d tests
$ cd タスク用ディレクトリ
$ acc submit 解答用ファイル$ cd コンテスト用ディレクトリ ←タスク用ディレクトリでも構わない
$ acc add