(1) 配列の並び替え
【Q】 数字の配列を、偶数はそのままの位置で、奇数のみを昇順に並び替えなさい。
例)
[7, 1] => [1, 7]
[5, 8, 6, 3, 4] => [3, 8, 6, 5, 4]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0] => [1, 8, 3, 6, 5, 4, 7, 2, 9, 0]
私の回答
def sort_array(array)
oddsArr = array.select {|n| n.odd? }.sort
array.map {|n| n.even? ? n : oddsArr.shift }
end
-
配列の中から奇数のみを取り出したいので、selectメソッドを使いました。
sortメソッドで昇降順に並び替えて、新しい配列に入れます。 -
元の配列を三項演算子を使って、並び替えます。
n.even?
偶数であるかどうかを判断
YES => そのまま配列に入れる
NO => 奇数なので、oddsArr
からshiftメソッドで1個ずつ取り出して返していきます。