2018-12-22
AtCoder Beginner Contest 114 B
[atcoder.jp](https://atcoder.jp/contests/abc114/tasks/abc114_b)結果
一発 AC
学んだこと
- integer#times を range#each と混同しないこと。
- 公式リファレンスちょっと慣れた。
- min(x, y)ではなく[x, y].min
- string#chars で文字列の 1 文字ずつを要素とする配列にできる。
- enum#each_cons で 1 つずつずらして 123,234,345…ととっていくことができる(下記のコードではつかっていない)
- map をうまくつかえるといい。コード量が減るし、この場合だと min_dif っていう変数とか、その初期値の設定とかが不要になる。使うタイミングとは「ある配列に対して、その要素と一対一で対応する要素をもつ配列をつくる」とき。
最初に書いたコード
s = gets.chomp
min_dif = 999
(s.size-2).times do |i|
min_dif = [min_dif, (753 - s.slice(i,3).to_i).abs].min
end
p min_dif
修正したコード
s = gets.chomp
p (0..s.size-3).map{|i|(s.slice(i,3).to_i - 753).abs}.min