N番煎じですみませんが、Macからatcoder-cli
を使った際の備忘録です
atcoderで便利に使えるツール集どこかにまとまっていないだろうか..
インストール
以下を参考にatcoder-cli
をインストールすればOK
Finder-->Application-->ターミナル から実行する
コマンドラインツールatcoder-cliを公開しました
atcoder-cli インストールガイド
https://github.com/Tatamo/atcoder-cli
pip3 install online-judge-tools npm install -g atcoder-cli
selenium
も必要かもしれないので念のためインストールする
pip3 install selenium
npm install時にエラーdyld: Library not loaded:/usr/local/opt/icu4c/lib/libicui18n.64.dylib
以下を参照して解決した
https://qiita.com/seigot/items/8fd186de797ac02f9e67
not found npm
brew install npm
使い方
acc
コマンドは以下のように使う
コンテスト情報取得(例.abc251)
$ acc contest abc251
> UserId/Passを入力
abc251 Panasonic Programming Contest 2022(AtCoder Beginner Contest 251) https://atcoder.jp/contests/abc251
$ acc tasks abc251
A Six Characters https://atcoder.jp/contests/abc251/tasks/abc251_a
B At Most 3 (Judge ver.) https://atcoder.jp/contests/abc251/tasks/abc251_b
C Poem Online Judge https://atcoder.jp/contests/abc251/tasks/abc251_c
D At Most 3 (Contestant ver.) https://atcoder.jp/contests/abc251/tasks/abc251_d
E Takahashi and Animals https://atcoder.jp/contests/abc251/tasks/abc251_e
F Two Spanning Trees https://atcoder.jp/contests/abc251/tasks/abc251_f
G Intersection of Polygons https://atcoder.jp/contests/abc251/tasks/abc251_g
Ex Fill Triangle https://atcoder.jp/contests/abc251/tasks/abc251_h
ログイン
提出前にログインしておく
(UserId/PassWordを入力する)
oj login https://atcoder.jp/contests
テストケースなどを取得
acc new abc251
全て取得するためのオプションは(acc new abc252 -c all
)
acc new abc252 -c all
テストケースを実行(main.pyを使う場合
)
cd abc251/b
(main.pyを作成)
oj t -c "python3 main.py" -d ./tests/
必要に応じてalias
を作成しておく
alias test='oj t -c "python3 ./main.py" -d ./tests/'
test
提出
acc s main.py
pypy
を明示的に指定する場合は以下の通り
acc s main.py -- --guess-python-interpreter pypy
以下のようなオプションを使ってもよさそう
acc s main.py -- --guess-python-interpreter pypy -w 0 -y
以下のような流れでコマンドを実行すればOK
acc new abc251
cd abc251/b
# b問題の場合main.py
にコードを書くoj t -c "python3 main.py" -d ./tests/
でテスト(必要に応じてaliasをかく)acc s main.py -- --guess-python-interpreter pypy
で提出
とても便利!作者の方ありがとうございます!!
acc new abc251
時にデフォルトでmain.py
がディレクトリに作成される状態にする
テンプレートファイルを作成する
cd `acc config-dir`
mkdir py
cd py
touch main.py template.json
main.py
には例えば以下のような記述をする
#!/usr/bin/env python3
import sys
sys.setrecursionlimit(4100000)
import math
def error(*args, end="\n"): print("[stderr]", *args, end=end, file=sys.stderr)
from bisect import bisect, bisect_left, bisect_right
from collections import defaultdict, deque
MOD = 998244353
INF = float("inf")
MINF = -float("inf")
template.json
には例えば以下のような記述をする
{
"task":{
"program": ["main.py"],
"submit": "main.py"
}
}
main2.py
等も増やしたい場合は以下のように記載する
{
"task":{
"program": ["main.py", "main2.py"],
"submit": "main.py"
}
}
テンプレートファイルを使用するように設定する
acc config default-template py # 設定する
acc templates # check
これで、acc new abc251
時にデフォルトでmain.py
がディレクトリに作成される状態になるはず
error('/Users/seigo/Library/Application Support/online-judge-tools/cookie.jar' does not look like a Set-Cookie3 (LWP) format file Traceback (most recent call last):
)
[HINT] You can delete the broken cookie.jar file: /Users/seigo/Library/Application Support/online-judge-tools/cookie.jar
[ERROR] '/Users/seigo/Library/Application Support/online-judge-tools/cookie.jar' does not look like a Set-Cookie3 (LWP) format file
Traceback (most recent call last):
cookieが変な状態になっているかもしれないので削除する(必要に応じてスペースの前に¥をつけてエスケープする)
rm /Users/seigo/Library/Application\ Support/online-judge-tools/cookie.jar
ソースコードのコピー
Macだとpbcopy
が使える。
pbcopy < test.py
# コピー後、Command+VでペーストすればOK
Windowsだとclip.exe
が使える様子
今後、試してみたいことなど
AtCoderResultNotifier - AtCoderの提出結果を通知するUserScriptを作成しました
参考
コマンドラインツールatcoder-cliを公開しました
atcoder-cli インストールガイド
https://github.com/Tatamo/atcoder-cli
https://twitter.com/ryuusagi/status/1292891516025753600?s=20&t=lShW-hWVYu9m-KroQn2iQA