cargo-competeでAtCoder

sobonn

sobonn

20211213に作成
この記事は最終更新から1年以上が経過しています

この記事は共同開発鯖 Advent Calendar 2021 13日目の記事です。 https://qiita.com/advent-calendar/2021/growthers

共同開発鯖のカレンダー | Advent Calendar 2021 - QiitaQiita Advent Calendar

共同開発鯖のカレンダーページです。

qiita.com

はじめに

AtCoderをRustでCLIでやりたかったのでその記録です。

cargo-competeのインストール

$ cargo install cargo-compete

cargo installはバージョンの更新をするのに向いてないのでcargo-updateも入れる。

$ cargo install cargo-update $ cargo install-update --all # このコマンドで確認と更新ができる

使い方

詳しいことはcargo-competeのREADME.mdを参照。

cargo-compete/README-ja.md at master · qryxip/cargo-compete · GitHub

A Cargo subcommand for competitive programming. Contribute to qryxip/cargo-compete development by creating an account on GitHub.

github.com

初期設定

任意のディレクトリで下記を実行

特に理由がなければ2を選択 (おそらく3を選択すれば任意のrustのバージョンとcrateが使える)

$ cargo compete init atcoder Do you use crates on AtCoder? 1 No 2 Yes 3 Yes, but I submit base64-encoded programs 1..3: 2 $ cargo compete login atcoder

AtCoderで使用されるRustのバージョンは1.42.0なのでtoolchainを入れる。

$ rustup toolchain install 1.42.0

必須ではないが、templateを自分好みにいじる。

[template] src = ''' use proconio::{fastout, input}; #[fastout] fn main() { input! { } todo!() } '''

問題&テストの取得と提出

newでディレクトリを生成する。 引数はコンテストのURLの末尾(ex. abc230, abs, typical90) --openをつけると問題文をブラウザで開く。

$ cargo compete new abs $ cd abs

コードを書いたらsubmitでテストと提出

テストが失敗した場合提出は行われない。

$ cargo compete submit abc086a

感想

割と楽。

かつ快適。

CLIはいいぞ。

SHARE