[Boot camp for Beginners] B - Collecting Balls (Easy Version) [Rust]
概要
AtCoder Problems: Boot camp for Beginners をRustで解いてみる
- 今回の問題:B - Collecting Balls (Easy Version)
- 書いたコード: AtCoder_Problems_Boot_Camp_for_Beginners/easy100/b-collecting-balls-easy-version at main · homura10059/AtCoder_Problems_Boot_Camp_for_Beginners
学んだことmemo
- iter の
fold
で TypeScript のreduce
的なことができる- rust にも
reduce
があるが、初期値を取らないので Option 型になってしまう fold
は必ず初期値を取るので初期値の型で返ってくる
- rust にも
- それ以外に学ぶことがなかったので、iterの便利そうなメソッドをまとめる
chain
- iter を連結できる
zip
- iter を合成できる
- 逆の操作をする
unzip
もある
filter
/map
- 他の言語でもよくあるので割愛
filter_map
- map した上で Option になる場合、Someのものだけに filter してくれる
- Option がある言語はこれがあるかないかで大きく使い勝手が違うのでとても大事
enumerate
- 添字付きで iter にしてくれる
- 稀によく使う
scan
fold
はiterの全ての要素を使って1つの結果に収斂させるが、scan
はそれまでの要素から得られたなんらかの値を持って、iterの1要素を変換した iterが得られる- 言葉で説明するのがとても難しいが使い所はありそう
flat_map
- mapした結果が iter だった場合に、入れ子にせずに連結してくれる
flatten
- すでに入れ子になっているiterを連結した状態にしてくれる
inspect
- iterを変更せずに覗き見できる
- メソッドチェーンが長くなった時に途中で確認するとかに使える
partition
- 条件を指定して、iter を2つに分けることができる
- 使い所はありそう
all
- 全ての要素が条件に一致したらtrue
any
- いずれか1つでも条件に一致したらtrue
- rustでは some ではないらしい
find
- 条件に一致するものを見つける
max
/max_by
/max_by_key
- 最大値を求める
_by
の方で条件式を書ける_by_key
の方で構造体の時でも使えるmin
の方にも同じものがある
[Boot camp for Beginners] B - Collecting Balls (Easy Version) [Rust]