AtCoder Beginner Contest 114 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