cargo atcoderを使用させていただいています。
まずこのリポジトリを clone します。
AtCoder 用の環境を作りたい場所で、以下のコマンドを実行してください。
わかる方はこのリポジトリをuse template
(緑色のボタンのやつ)して頂いても大丈夫です。
git clone https://github.com/hppRC/AtCoder-with-Rust-in-mac.git
次に、クローンしてきた場所に移動します。
# どこかのディレクトリからAtCoder用のディレクトリへ
cd AtCoder-with-Rust-in-mac
次に、セットアップ用のスクリプトを実行します。
これを実行すると、Rust 本体のインストールし、AtCoder 用の config ファイルのシンボリックリンクを貼り、brew で必要なパッケージをインストールします。
もしすでにインストール済みならインストールを行わないように処理を書いていますが、気になるようであればinit.sh
を読んでみてください。めっちゃ単純です。
bash ./init.sh
ちなみに Rust の各種ツールのインストールはちょっと長めです。気長に待ちましょう。自分の mac は火を吹きました。多分普通だと思います。
インストールが終わるとloginを求められるので、AtCoder のユーザー名とパスワードを入力ください。
クロスコンパイル(コンパイルされる環境と実行環境が違う時にいい感じにコンパイル)するために、cross というツールを使用します。これは Docker を使用するので、Docker を install する必要があります。
こちらの記事[Docker を Mac にインストールする(更新: 2019/7/13)]に詳しく載っていますが、一応手順をさらっと書いておきます。
Docker のインストールはやり方を知っていると簡単です。まずDocker 公式サイトにアクセスしてcreate account
してください。Docker を使うためにはなぜかDockerHub というところのアカウントを作る必要があるので、ここは我慢してください。
適当にインストール手順が出てくると思うので、いい感じにこなすとコマンドラインで docker が呼べるようになっています。docker version
を実行してみましょう。
さて、これで環境は整ったはずです。 早速問題を解いて提出してみましょう!
ちなみにですが、Rust 何もわからん、という方のための動作確認用に自分のリポジトリへのリンクを貼っておきます。 ご自由にお使いください。
https://github.com/hppRC/RustAtCoder
また、clone してきたリポジトリを自分のリポジトリとして管理したい!という場合はgit init
なりrm -rf ./.git
なりして頂いて大丈夫です。こちもご自由にお使いください。
使用させて頂いているcargo-atcoderの README に詳しい説明が載っているので、特に書くことはありませんがメモがわりに残しておきます。
また、AtCoder で使える Rust の基本的な情報については、先人の方々が残してくださった記事のリンクを列挙させていただきます。 以下をご参照ください。
- AtCoder コンテストに Rust で参加するためのガイドブック
- AtCoder 2020 年言語アップデート以降の環境
- AtCoder のジャッジシステムアップデートによって Rust で使えるようになる便利 API たちの紹介
- AtCoder 言語アップデートで Rust の入出力が楽になっていた
cargo atcoder submit <problem-id>
手元でコンパイル済みのものを提出として投げるので、自作の crate(ライブラリ)を使えるようになったり、世の中の便利 crate を引っ張ってきて使わせてもらうこともできます。 proconio という crate は言語アップデート後のジャッジでしか対応していないはずなので、とりあえずバイナリを投げておくのが安全策ではあります。(どんな問題にも使えるので)
cargo atcoder submit --bin <problem-id>
alias cas="cargo atcoder submit"
これで例えば abc152 ディレクトリに移動して
cas a
と打てば提出できる
cargo atcoder status
既存のエイリアスやコマンドとかぶらないようにしてお使いください。
alias cas="cargo atcoder submit"
alias can="cargo atcoder new"
toml ファイルも git 管理したいのは非常に常識的な感覚だと思うので、シンボリックリンクの貼り方も載せておきます。 シンボリックリンクは(誤解を恐れずに言うと)ファイルのドッペルゲンガーを作るようなコマンドで、一方で編集した内容がもう一方にも反映させることができます。
macOS 環境を想定
# ln -sf ~/path/to/your_directory/cargo-atcoder.toml ~/Library/Preferences/
# 現在いるディレクトリのcargo-atcoder.toml から ~/Library/Preferences/ へ貼るには以下
ln -sf $(pwd)/cargo-atcoder.toml ~/Library/Preferences/