AC Deck を使って Rust で AtCoder の問題を解く - AC Deck のクイックスタート (Rust 編) -
AC Deck を Rust に対応させました。
https://github.com/sachaos/ac-deck
このブログポストは AC Deck を使って Rust で AtCoder の問題を解くという、 AC Deck のクイックスタートマニュアルです。
AC Deck はローカルでのテストの実行を Docker で行っており、環境構築が非常に簡単です。
AtCoder で Rust を試してみたいなという方にはピッタリかと思います。
## AC Deck のインストール
$ brew install sachaos/tap/ac-deck
## AC Deck で Rust のインストール
$ acd install rust
Image not found: ghcr.io/sachaos/atcoder-rust:v1.0.0
Pulling image: ghcr.io/sachaos/atcoder-rust:v1.0.0
v1.0.0: Pulling from sachaos/atcoder-rust
...
Digest: sha256:b089d4ea70df4f2e8cc870f380249a2b36977ba75d3e0ef582a56001483a2dc7
Status: Downloaded newer image for ghcr.io/sachaos/atcoder-rust:v1.0.0
Preparation completed
## ABC 188 コンテストの問題を取得
$ acd prepare abc188 --language rust
Using template of Rust (1.42.0)
Generating testdata & source on abc188/abc188_a
Generating testdata & source on abc188/abc188_b
Generating testdata & source on abc188/abc188_c
Generating testdata & source on abc188/abc188_d
Generating testdata & source on abc188/abc188_e
Generating testdata & source on abc188/abc188_f
## ABC 188 の問題 A を解く
$ acd abc188/abc188_a edit
エディタが立ち上がり、テンプレートから生成されたコードが表示されます。
テンプレートは自分でカスタマイズすることもできます。
// Code for A - Three-Point Shot
use proconio::input;
fn main () {
input! {
N: i32,
}
println!("hello world");
}
これを以下のように正答するコードに書き換えてください。
// Code for A - Three-Point Shot
use std::cmp::*;
use proconio::input;
fn main () {
input! {
X: i32,
Y: i32,
}
if (min(X, Y) + 3 > max(X, Y)) {
println!("Yes");
} else {
println!("No");
}
}
## ローカルでテストする
AtCoder に提出する前に問題文に書かれているテストケースが通ることを確認できます。
$ acd abc188/abc188_a test
Running test on Container mode
Case 1: AC
Time: 138.360725ms
Case 2: AC
Time: 134.926279ms
Case 3: AC
Time: 133.262833ms
## AtCoder に提出する
$ acd abc188/abc188_a submit
Running test on Container mode
Case 1: AC
Time: 129.136705ms
Case 2: AC
Time: 145.533183ms
Case 3: AC
Time: 128.022642ms
Submit success!
Judging: AC DONE
+--------------------------|----------------------|-----------------|-------|-------------|--------|--------------|---------+
| SUBMISSION DATE | PROBLEM | LANGUAGE | SCORE | CODE LENGTH | RESULT | ELAPSED TIME | MEMORY |
+--------------------------|----------------------|-----------------|-------|-------------|--------|--------------|---------+
| 2021-01-10 21:01:51+0900 | A - Three-Point Shot | C++ (GCC 9.2.1) | 100 | 991 Byte | AC | 8 ms | 3632 KB |
| 2021-01-10 21:04:06+0900 | B - Orthogonality | C++ (GCC 9.2.1) | 200 | 1088 Byte | AC | 50 ms | 4848 KB |
| 2021-01-10 21:24:09+0900 | C - ABC Tournament | C++ (GCC 9.2.1) | 300 | 1327 Byte | AC | 43 ms | 4476 KB |
| 2021-01-10 22:05:52+0900 | D - Snuke Prime | C++ (GCC 9.2.1) | 0 | 1155 Byte | RE | 281 ms | 8224 KB |
| 2021-01-23 07:02:16+0900 | A - Three-Point Shot | C++ (GCC 9.2.1) | 100 | 991 Byte | AC | 5 ms | 3608 KB |
| 2021-01-23 08:15:44+0900 | A - Three-Point Shot | Rust (1.42.0) | 100 | 244 Byte | AC | 10 ms | 2132 KB |
| 2021-01-23 08:53:00+0900 | A - Three-Point Shot | Rust (1.42.0) | 100 | 244 Byte | AC | 4 ms | 2096 KB |
+--------------------------|----------------------|-----------------|-------|-------------|--------|--------------|---------+