Rustに入門したのでとりあえずAtCoderで1万点分解いてみた
普段は Python しか書いてないんですけど、なんとなくで今回 Rust に入門してみました。 12 月 20 日に 公式チュートリアル を読み始めてその日のうちに 4 章までは読み終えることができ、21 日の 0 時から AtCoder の問題を解き始めました。
提出記録です。
今日中にRustで10000点分解きます(提出ぶら下げ用ツイート)
— saba (@saba_kpr) December 20, 2019
1万点解き終わったのが22時半なのでだいぶギリギリですね。
解いた問題の内訳は、
- A 問題:11 問
- B 問題:37 問
- C 問題:5 問
で、全部で 53 問です。
主に参考にしたサイト
- 公式チュートリアル
- 基本的な文法とかはここで最初にやりました。
- AtCoder に登録したら解くべき精選過去問 10 問を Rust で解いてみた
- 主に入力周りはここを参考にしました。(read 関数はそのままここに載っているものを使いました)
- 文字列操作 with Rust
- Python と違って文字列が地獄だったのでだいたいここを見ながらやりました。
- rust String &str の変換と、文字列 数値 の変換
- 競技プログラミングにおけるPythonとRustの対応関係まとめ
- set を使いたくなったのでそこだけここを参考にしました。
- Rustのイテレータの網羅的かつ大雑把な紹介
- Rustのデータ構造について調べた - std::vec::Vec
よく使ったやつ
ほぼ自分用のメモです。
みたいな入力を受け取りたいとき
let a: Vec<u32> = (0..n).map(|_| read()).collect();
二次元版(n行m列)
let mut a: Vec<Vec<i32>> = Vec::new(); a.resize(n, Vec::new()); for i in 0..n { a[i] = (0..m).map(|_| read()).collect(); }
Python と違って切り捨て除算は0方向に丸められる。
おわりに
疲れたのでしばらくはやりたくないですが、結構楽しかったので年明けたら他の言語でもやってみたいです。