Magicode logo
Magicode
1

RustとAtCoderを勉強する(typical90_ca)

3 min read

はじめに

AtCoder の問題を Rust で解いていきます。AtCoder も Rust も初心者ですが、温かい目で成長を見守っていただけるとありがたいです。

今回は、競プロ典型90問079 - Two by Two(★3)を解きました。

提出コード

解説

アルゴリズム的な解説はこちらを参考にしてください。この記事では Rust での実装に焦点を当てて解説します。今回は勉強がてら ndarray を使用しました。

  • Vec<Vec<_>>Array2<_> に変換する
  • array の一部に対して演算を行う

arrayslice を取るメソッドはいくつかありますが、array の値を変えたいのであれば slice_mut を使います。さらに slice した範囲に演算を行う場合は map を続けますが、こちらも inplace とついたメソッドを使用しなければ array 自体の値は変わらないので注意してください。ちなみに map は参照を受け取り、 mapv は値を受け取ります。つまり、上のコードは下のように書き換えることもできます。

まとめ

Rust の ndarray を使用してみました。さすがに numpy ほどの使いやすさではないと感じましたが、Vec よりは多次元配列の扱いがしやすくなると思うので、勉強していきたいと思います。

Discussion

コメントにはログインが必要です。