sachaos.md
----------

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 |
+--------------------------|----------------------|-----------------|-------|-------------|--------|--------------|---------+