結論から言うと常時使用は諦めた(えー!!!)
環境
- MacBook Air 2022 M2
- OS Monterey 12.5.1
- RAM 24GB(ただの自慢)
- VScode
- シェルはzsh
- 使用言語はpython
経緯
- 上記を参考に、online-judge-toolsとatcoder cliを入れてある
- accについては、入れてはあるがうまく扱えず、ojtだけでDL→提出してる
- コンテスト出る時もいちいちtestディレクトリ消してurlコピペしてターミナルに貼ってる
- Githubに提出コード置いてるのかっこいい!そして便利そう!!
- あ、そうか、atcoder cli使えばコンテストごとにディレクトリ作ってくれるから、ローカルに…提出を…溜めておける……(収集癖スイッチオン)
- とはいえ精進の横道に逸れるから、ほどほどに研究してみよう
思い立ってからの流れ
ターミナルから、VScodeでファイル開けるようにする
なんでこれやってなかったんだろう…人生捗るよ……!
- VScodeでCommand + Shift + P(コマンドパレット開く)
- 「Shell Command: Install 'code' command in PATH」を叩く
$open ファイル名
の代わりに
$code ファイル名
と叩くと、VScodeで開かれてよきよきのよき!!
ついでに
$code .
で、今いるディレクトリをエクスプローラーとし開くことができてよき
挙動は「フォルダを開く」と同じ
acc new コンテストid を実行しても問題が選べない問題を解決っ
$ acc config oj-path: /usr/local/bin/oj default-contest-dirname-format: {ContestID} default-task-dirname-format: {tasklabel} default-test-dirname-format: tests default-task-choice: all default-template: cpp
本当に何もやっていなかった。C++時代の遺産じゃん
default-task-choice: all → inquire
に変更すると、選択式にできた
$ acc config default-task-choice inquire $ acc config oj-path: /usr/local/bin/oj default-contest-dirname-format: {ContestID} default-task-dirname-format: {tasklabel} default-test-dirname-format: tests default-task-choice: inquire default-template: cpp
acc sで提出できない問題を解決っ
ojtで提出用に設定されているディレクトリ名がtestなので、合わせてあげる
default-test-dirname-format: tests → test
$ acc config default-test-dirname-format test $ acc config oj-path: /usr/local/bin/oj default-contest-dirname-format: {ContestID} default-task-dirname-format: {tasklabel} default-test-dirname-format: test default-task-choice: inquire default-template: cpp
デフォルトテンプレートをpythonへ
$ acc config default-template python $ acc config oj-path: /usr/local/bin/oj default-contest-dirname-format: {ContestID} default-task-dirname-format: {tasklabel} default-test-dirname-format: test default-task-choice: inquire default-template: python
テンプレート設定
1.accの設定ディレクトリへ移動
$ cd `acc config-dir`
2.テンプレートディレクトリ作る(default-template:に設定した名前で)
$ mkdir python
3.移動する
$ cd python
4.テンプレートファイルと、設定用ファイル作る
$ touch test.py template.json
5.template.jsonに以下を追加
{ "task":{ "program": ["test.py"], "submit": "test.py" } }
これでテストケースDL時にtest.pyも自動で作られ、提出もtest.pyのものが飛ぶ
6.横着なのでtest.pyによくある入力ケース入れておく
n = int(input()) n,m = map(int,input().split()) a = list(map(int,input().split())) li = [list(map(int, input().split())) for _ in range(n)]
エイリアス登録
ターミナルで楽したい
alias tt='oj t -c "python3 test.py"' alias gg='oj s test.py' alias ggg='oj s --guess-python-interpreter pypy test.py' alias rr='rm -r test'
いつものojdでの流れは
oj d
の手打ち後、問題URL貼り付けてテストケースDL- コード書く
tt
でテストgg
でpython3提出- ※ライブラリ使ってなくてTLEこわい時は
ggg
でpypy3提出 rr
でテストケースフォルダ滅す
のループである
zshrc開く
$code ~/.zshrc
以下を追加
alias ag='acc s' alias agg='acc s test.py -- --guess-python-interpreter pypy' alias ad='acc add'
登録しておくと
acc new コンテストID
を手打ちcd コンテストID/a
で移動- test.py開き、コード書く
tt
でテストag
でpython3提出- ※ライブラリ使ってなくてTLEこわい時は
agg
でpypy3提出 ad
で次の問題へ
ちなみにVScodeショートカットにて
- 「control(^) + T」ターミナルへ移動
- 「control(^) + E」エディタへ移動
にしてあり、これもとても楽
エイリアス登録した後はコンソールをリフレッシュ(一度閉じて再度開く)しないと、せっかく作ったエイリアスが効かないから注意だ! ※まさかのハマった
使ってみて思ったこと
ディレクトリ移動がちょいめんどい
これはaccが悪いのではなく、私がojtオンリーに慣れすぎてしまったため…
cd〜
を忘れてtt
を叩き謎の現象が起こりがち
解決策も教えてもらったけれど、知識足りてないからもう少し先かな…!
「acord」と「aprob」を参照するとよいそうです
シェル変数については
圧倒的感謝…!!
ついついtest.pyの中身を消して新しいコード書いてしまう
これはaccが悪いのではなく、私がojtオンリーに略
テスト時に気付いて「あっ」てなる
提出をローカルに溜める目的も投げ出してしまう、手癖ってこわい…
提出時確認に叩く文字4つを打ち間違える
これはaccが悪いのではなく略
なかなかブラウザ開かないな〜って思ってたらターミナルが笑顔で入力待機している
ojtだとy
だけで飛ぶのがいけない(そんなところが大好き)
これからどうするか
- 普段の精進はojtのまま
- コンテストはacc利用
かな、と思っている
理由としては
600問で積み重ねてきた手癖を修正する元気がない(!!)
とはいえコンテスト時は、問題URLをコピペるよりも以下手順の方が速そう
- acc new abc279などの状態で待機。21:00に実行
- ダウンロードしてる間に問題ページへ移動
- その時くらいはcd abc279/aしてあげるわよ
- よくある入力入ったテンプレ開かれるのは魅力的だわよ
- たぶん提出の4文字もそこまで気にならないわよ
という、ひよこの予想
もし
「こうすると楽だよ!」
「ここ間違ってるよ!」
「こうもできるよ!」
などなどあったら、ビシバシ教えていただけると、とってもとってもうれしです…!