同じ問題を何度も解く人のための atcoder-cli 補助コマンド
atcoder-cli https://github.com/Tatamo/atcoder-cli の補助コマンドを作って使っているので一応共有します。atcoder-cli は便利です。作者様ありがとうございます。
私は同じ問題を忘却曲線に従って複数回解いたり、手法を変えて複数回解いたりするため、1つの task ディレクトリに対して複数の main.cpp を持ちたいです。main.<リビジョン名>.cpp のようにして管理することにしました。
cpmain
https://github.com/ishikuro-shunsuke/atcoder/blob/main/cpmain
task のディレクトリで cpmain 2
などとすると、main.2.cpp
としてテンプレートをコピーしてきます。引数は、ファイル名に使える文字列ならばどんなものでも可能です。cpmain dp
で main.dp.cpp
とするなど手法に応じて名付けたりするのも便利です。
#!/bin/bash if [ $# -ne 1 ]; then echo "usage: cpmain <revision-name>" 1>&2 exit 1 fi cp `acc config-dir`/cpp/main.cpp main.${1}.cpp echo -e "\n// STARTED: $(date '+%Y/%m/%d %H:%M:%S')" >> $_
最後に exec code main.${1}.cpp
など追加してやると自動でエディタも開いてくれるのでいいのではないかと思います。
cts
task のディレクトリで、 cts 2
とするとcpmain の規則の名前の main.2.cpp
の Compile, Test, Submit を自動的にやってくれます。cpmain と対になって使うものなので、もちろんこちらも 2
以外にも dp
など自由な文字列を使用できます。
https://github.com/ishikuro-shunsuke/atcoder/blob/main/cts
#!/bin/bash if [ $# -ne 1 ]; then echo "usage: cts <revision-name>" 1>&2 exit 1 fi g++ main.${1}.cpp && oj t -d tests && echo -e "// PASSED : $(date '+%Y/%m/%d %H:%M:%S')" >> main.${1}.cpp && acc s main.${1}.cpp
それぞれ問題を開始した時間、ローカルのテストをパスした時間を追記するようにしてあります。
コンテストは全然出ていなくて、これから頑張ります。おわり。