2019-04-28
AtCoder Beginner Contest 125 by Ruby
[atcoder.jp](https://atcoder.jp/contests/abc125/tasks/abc125_c)- 「各要素を除いたときの最大公約数をそれぞれ求めて、その最大値を返せばよい」ということには気づけた。
- gcd の計算では結合則が成立するので、両端から順に最大公約数を算出し、配列としてメモっておく方法を発想できたかった。
- 降順のイテレートは
Range#each
では不可。Integer#down_to
など使うべし。
(1..10).each {|i| print i, " "} # => 1 2 3 4 5 6 7 8 9 10
(10..1).each {|i| print i, " "} # => (出力なし)
10.downto(1) {|i| print i, " "} # => 10 9 8 7 6 5 4 3 2 1
[atcoder.jp](https://atcoder.jp/contests/abc125/tasks/abc125_d)
- 回答みたらさくっと解けた。
- 与えられた操作によって「任意の 2 つの数の正負を反転できる」ことに気づきたかった。
- ruby 2.3.3 だと Array#sum がつかえない。
array.inject(0) {|sum, a| sum + a}
としてもよいが、これはinject(:+)
と書ける。すっきり! array.map {|a| a.abs}
とか書いちゃったけど、ぱっとarray.map(&:abs)
という書き方がでてくるようにしたい。