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 abc251cd 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