AtCoder向けのスクリプトを書いたお話
AtCoderの問題ページからコンテストIDを取得し、クリップボードに書き込むスクリプトを書きました。
とりあえずダウンロードしたい方はこちら
作成背景
ユーザースクリプトについて
とりあえずもう一回スクリプトのURL載せておきます。
greasyfork.org
コンテストIDのみ取得
やり方は簡単で、スクリプトをダウンロードしてから問題ページでショートカットキーを押すだけです
ショートカットキーはとりあえず押しやすいCtrl + Qとしていますが、Ctrlと合わせて押すキーは自由に設定可能です(ほかのショートカットと干渉するのは各自で対処お願いします)
Macユーザは、Command + 設定キーで動くようGoogleで検索して実装はしてありますがMacを持っていないので試すことができてないです。
(2020/11/29追記)
Macの方に試していただいた結果Macですとcommand + Qでは干渉してしまうらしく、chromeのショートカット設定を切るかcommand + Bなどにすると良いそうです!
その他機能についての詳細
※vscodeを前提として書いているので、その他の方が取り組む場合は各自対応お願いします
何ができるか
簡単な流れを示すと、
- 解きたい問題ページでCtrl + Qを押して[スクリプト名] [コンテストID] [問題番号]を取得
- vscodeのターミナルでマウス右クリックして貼り付けして実行
- 自動で サンプルダウンロード&解きたい問題ページのソースファイル[main.cpp]をvscodeのエディタで開く
とこんな感じで、問題ページを開いてからショートカット実行と貼り付けの2操作で問題を解く準備を整えることができます。
どんなスクリプトを書いてるか
#!/bin/bash contest=$1 problem=$2 baseDir="/mnt/c/Users/****/Documents/vscode/AtCoder/study"; if [ -e $baseDir/$contest/$problem/"main.cpp" ]; then echo "File exist"; echo "open file"; cd $baseDir/$contest/$problem; code "main.cpp"; else echo "File not exist"; echo "execute acc new command"; cd $baseDir; acc new $contest; cd $contest/$problem; code "main.cpp"; fi
(2020/12/01追記)
写真を実際のコードと差し替えました
簡単に説明すると
2行目:コンテストIDを引数として受け取る([ABC182]等)
3行目:問題番号を引数として受け取る([A]等)
4行目:精進用のディレクトリを指定
6-10行目:取り組む予定の問題が存在したら、ソースファイルを開く
12-17行目:存在しなかったら、acc newコマンドで問題&サンプルダウンロードしつつ、ソースファイルを開く
となっていて、例えばABC181-Bに取り組みたい場合
- practice.sh abc181 aをvscodeのターミナルで実行
- ファイルが存在するかどうか
- 以前ABC181-Aに取り組んでおり、ファイルが残っている
acc newコマンドは実行せず[精進ディレクトリ]/abc181/b.main.cppを開く
- ファイルが存在しない
acc newコマンド実行後、[精進ディレクトリ]/abc181/b.main.cppを開く
のようになります。