今回はこちらのツールを紹介します(なぜか日本語記事でCodeforces向けのツール紹介がなかったので)
ツール概要
このツールは以下のような便利機能を提供しています。
- テストケースのダウンロード・ディレクトリセットアップ
- テンプレートファイルからコードの生成
- 提出
- コンテストへの参加・カウントダウン表示
online-judge-toolsやatcoder-cliをご存知なら、それのCodeforces版のようなものです。
インストール
コンパイル済みのバイナリをダウンロードするか、ソースコードからビルドします。
ダウンロードはこちらから Releases · xalanq/cf-tool · GitHub
ソースコードからビルドする場合は次のようになります。Goがインストールされている必要があります。
$ go get github.com/xalanq/cf-tool $ cd $GOPATH/src/github.com/xalanq/cf-tool $ go build -ldflags "-s -w" cf.go
ログイン
インストールしたら、まずCodeforcesへログインします。cf config
コマンドを実行し、なにを設定するか問われるので0
と入力してログイン設定へ進みます。その後必要な情報を入力してログインします。
使用例
たとえば Problem - 279B - Codeforces こちらの問題を例に見てみます。
- テストケースをダウンロード:
cf parse 279
- ディレクトリへ移動:
cd ./cf/contest/279/b
- ファイルを編集:
code b.cpp
- テスト:
cf test
- 提出:
cf submit
atcoder-cliと似ていることが分かるかと思います。
cf submitすると、コードのジャッジ状況がターミナル上に表示されて更新されていきます。提出結果を確認するためだけにブラウザを開かずに済むので楽です。
ちょっとだけ便利にする
軽いラッパーを噛ませて、cf t
でテスト、cf s
で提出できるようにします。
以下はzsh用のラッパーになります。
cf() { if [ "s" = "$1" ]; then command cf submit ${@:2} elif [ "t" = "$1" ]; then command cf test ${@:2} else command cf ${@:1} fi }