atcoder-tools
AtCoder Tools
Python 3.6 以降で動作する AtCoder からサンプル入力をダウンロードしたりする際に便利なツールです。
このツールには次のような機能があります。
- AtCoderへのログイン,入出力例データなどの抽出
- 枝刈り探索による高精度・高速な入力フォーマット解析 (ARC、ABC、AGCについては約9割ほど)
- 問題文中に含まれるMOD値、YES/NO文字列、誤差ジャッジのための誤差値等の定数値抽出
-
サンプルのローカルテスト機能
- 誤差ジャッジに対応 by @chaemon
- コード提出機能
-
入力フォーマット解析結果や抽出した定数値を用いたテンプレートからのコード自動生成(以下の表に記載されている言語をサポートしています)
- カスタムテンプレートに対応
- 他言語対応のためのコントリビューション(≒中間形式からコードに変換する部分のPR)を募集中です!
対応言語
Contributor 1
Contributor 2
C++
@kyuridenamida (generator, template)
@asi1024 (template)
Java
@kyuridenamida (generator, template)
Rust
@fukatani (generator, template)
@koba-e964 (template, CR)
Python3
@kmyk (generator, template)
@penpenpng (generator)
D
@penpenpng (generator, template)
Nim
@chaemon (generator, template)
C#
@chaemon (generator, template)
Swift
@firewood (generator, template)
Go
@nu50218 (generator, template)
@chaemon (generator, template)
Julia
@yatra9 (generator, template)
@chaemon (generator, template)
Demo
How to install
pip3 install atcoder-tools
ただのpip
だとPython 2系を使ってインストールされる可能性があるためうまくいかないかもしれません。
Userscript by @kmyk (NEW! 2019/03/06)
Tampermonkey(各種ブラウザで動作)でインストールすることが可能なUserscriptです。公開されている過去問を対象として、atcoder-toolsで自動生成されたコードをそのままAtCoderのスニペット上で利用できます。
- Tampermonkey をインストールする (Chrome, FireFox)
- https://kyuridenamida.github.io/atcoder-tools/index.user.js にアクセスしてUserscriptをインストール
- ログインした状態で適当な問題ページに行く(e.g. https://atcoder.jp/contests/abc120/tasks/abc120_d)
- 正しくインストールされている場合、ページ下部のコードスニペットにコードが標準で埋め込まれている (atcoder-toolsの対応言語のみ)
Analysis
https://kyuridenamida.github.io/atcoder-tools/
各問題ごとの解析結果などが載っています。
Usage
重要: かつてパスワード入力なしでログインを実現するためにAccountInformation.py
にログイン情報を書き込むことを要求していましたが、セキュリティリスクが高すぎるため、セッション情報のみを保持する方針に切り替えました。
今後はできるだけ保持されているセッション情報を利用してAtCoderにアクセスし、必要に応じて再入力を要求します。
過去のユーザーの皆様にはAccountInformation.py
を削除して頂くようお願い申し上げます。
-
atcoder-tools gen {contest_id}
コンテスト環境を用意します。 -
atcoder-tools test
カレント・ディレクトリ上に実行ファイルと入出力(in_*.txt, out_*.txt)がある状態で実行するとローカルテストを行います。 -
atcoder-tools submit
カレント・ディレクトリ上で実行すると対応する問題がサンプルに通る場合ソースコードを提出します。既にAtCoder上にその問題に対する提出がある場合、-u
を指定しないと提出できないようになっています。 -
atcoder-tools version
現在の atcoder-tools のバージョンを出力します。
atcoder-tools gen --help
でatcoder-tools gen
の引数の詳細について確認することができます。
例:
atcoder-tools gen agc001 cd ~/atcoder-workspace/agc001/A g++ main.cpp atcoder-tools test
--without-login
引数を指定するとログインなしでデータをダウンロードできます(一般公開されているコンテストのみ)。
$ atcoder-tools gen [contest_id] --without-login
gen の詳細
usage: atcoder-tools gen
[-h] [--without-login] [--workspace WORKSPACE] [--lang LANG]
[--template TEMPLATE] [--parallel] [--save-no-session-cache]
[--skip-existing-problems] [--config CONFIG]
contest_id
positional arguments:
contest_id Contest ID (e.g. arc001)
optional arguments:
-h, --help show this help message and exit
--without-login Download data without login
--workspace WORKSPACE
Path to workspace's root directory. This script will create files in {WORKSPACE}/{contest_name}/{alphabet}/ e.g. ./your-workspace/arc001/A/
[Default] /home/kyuridenamida/atcoder-workspace
--lang LANG Programming language of your template code, cpp or java or rust or python or nim or d or cs or julia.
[Default] cpp
--template TEMPLATE File path to your template code
[Default (C++)] /atcodertools/tools/templates/default_template.cpp
[Default (Java)] /atcodertools/tools/templates/default_template.java
[Default (Rust)] /atcodertools/tools/templates/default_template.rs
[Default (Python3)] /atcodertools/tools/templates/default_template.py
[Default (NIM)] /atcodertools/tools/templates/default_template.nim
[Default (D)] /atcodertools/tools/templates/default_template.d
[Default (C#)] /atcodertools/tools/templates/default_template.cs
--parallel Prepare problem directories asynchronously using multi processors.
--save-no-session-cache
Save no session cache to avoid security risk
--skip-existing-problems
Skip processing every problem for which a directory already exists
--config CONFIG File path to your config file
[Default (Primary)] /home/kyuridenamida/.atcodertools.toml
[Default (Secondary)] /atcoder-tools/atcodertools/tools/atcodertools-default.toml
test の詳細
usage: atcoder-tools test [-h] [--exec EXEC] [--num NUM]
[--dir DIR] [--timeout TIMEOUT]
[--knock-out]
[--skip-almost-ac-feedback]
[--judge-type JUDGE_TYPE]
[--error-value ERROR_VALUE]
optional arguments:
-h, --help show this help message and exit
--exec EXEC, -e EXEC File path to the execution target. [Default] Automatically detected exec file
--num NUM, -n NUM The case number to test (1-origin). All cases are tested if not specified.
--dir DIR, -d DIR Target directory to test. [Default] Current directory
--timeout TIMEOUT, -t TIMEOUT
Timeout for each test cases (sec) [Default] 1
--knock-out, -k Stop execution immediately after any example's failure [Default] False
--skip-almost-ac-feedback, -s
Hide inputs and expected/actual outputs if result is correct and there are error outputs [Default] False,
--judge-type JUDGE_TYPE, -j JUDGE_TYPE
error type must be one of [normal, absolute, relative, absolute_or_relative]
--error-value ERROR_VALUE, -v ERROR_VALUE
error value for decimal number judge: [Default] 0.000000001
submit の詳細
usage: atcoder-tools submit [-h] [--exec EXEC] [--dir DIR]
[--timeout TIMEOUT] [--code CODE]
...