去年の 7 月からぼちぼちと AtCoder のコンテストに参加してはいるのですが、 茶と緑の間を行ったり来たりしていてキレたので、僕が考えた最強の AtCoder の CLI ツールを作成しました。

https://github.com/sachaos/ac-deck

これを利用することで以下のデモのようにシュッとコードを書いて、シュッとテストして、シュッと提出することが可能です。

まだ、あまり実践でテストされていないし、サポートしている言語も多くないので、使ってみてなにか問題があった場合は GitHub で Issue や Pull Request をいただけると嬉しいです。

デモ

demo.gif

特徴

  • インストールが簡単
  • Docker を利用することにより簡単にテスト実行環境が整う
  • テンプレート機能
  • サンプルデータのダウンロード
  • サンプルデータを利用したテスト機能 (Docker 上もしくはローカルで)
  • コード提出機能

インストール方法

Mac ユーザーは Homebrew でインストールできます。

$ brew install sachaos/tap/ac-deck

Linux, Windows は GitHub にバイナリを置いているのでそちらを利用してください。

使い方

セットアップ

$ acd config

認証情報を入力してください。

注: 現状、 ~/.ac-deck.toml にパスワードなどをそのまま格納します。この挙動を理解して注意して使ってください。この挙動を修正することに興味がある場合は、ぜひコントリビュートしてください!

コンテスト参加の準備

$ acd abc150 prepare
Using template of python3
Generating testdata & source on abc150/abc150_a
Generating testdata & source on abc150/abc150_b
Generating testdata & source on abc150/abc150_c
Generating testdata & source on abc150/abc150_d
Generating testdata & source on abc150/abc150_e
Generating testdata & source on abc150/abc150_f

abc150 の問題それぞれのディレクトリを作成します。 それぞれのディレクトリの中には以下のファイルが生成されています。

  • main.py: テンプレートから生成されたソースファイル
  • testdata.yaml: サンプルの入力、出力のデータ
  • .task.yaml: ac-deck 用の設定ファイル

問題をブラウザで開く

$ acd ./abc150/abc150_a browse

ソースを編集する

$ acd ./abc150/abc150_a edit

$EDITOR 環境変数で指定されたエディタを使用してソースファイルを開きます。

テストを実行する

テストを Docker もしくはローカル上で実行することが可能です。 Docker は必須ではありませんが、強く推奨しています。 Docker がインストールされていない場合はローカルでのテスト実行を試みます。

$ acd ./abc150/abc150_a test
Running test on Container mode

Case 1: AC

Case 2: AC

Case 3: AC

予め、テストの実行環境 (Docker image) を以下のようにしてインストールすることが可能です。

$ acd install python3

もしテストケースを足したい場合は testdata.yaml を編集することで追加することができます。

コードを提出する

$ acd ./abc150/abc150_a submit

テストをスキップしたい場合は --skip-test オプションを指定してください

$ acd ./abc150/abc150_a submit --skip-test

対応できていないこと

  • C++ の boost や Python の scipy, numpy のライブラリ
  • ユーザー独自のテンプレートを利用する機能
  • いろんな言語の対応

まとめ

僕が考えた最強の AtCoder のツールを紹介しました。 もしよかったら使っていただけると嬉しいです。