AtCoder の問題を Rust で解いていきます。AtCoder も Rust も初心者ですが、温かい目で成長を見守っていただけるとありがたいです。
今回は、競プロ典型90問の079 - Two by Two(★3)を解きました。
アルゴリズム的な解説はこちらを参考にしてください。この記事では Rust での実装に焦点を当てて解説します。今回は勉強がてら ndarray
を使用しました。
Vec<Vec<_>>
を Array2<_>
に変換するarray
の一部に対して演算を行うarray
の slice
を取るメソッドはいくつかありますが、array
の値を変えたいのであれば slice_mut
を使います。さらに slice
した範囲に演算を行う場合は map
を続けますが、こちらも inplace
とついたメソッドを使用しなければ array
自体の値は変わらないので注意してください。ちなみに map
は参照を受け取り、 mapv
は値を受け取ります。つまり、上のコードは下のように書き換えることもできます。
Rust の ndarray
を使用してみました。さすがに numpy ほどの使いやすさではないと感じましたが、Vec
よりは多次元配列の扱いがしやすくなると思うので、勉強していきたいと思います。