偶数の長さの部分を正しく取得できない理由がわかりません。
def median(array)
array.sort!
if array.length % 2 == 0 #if amount of array members is even
(array[(array.length/2) + 1] + array[array.length/2]) / 2.to_f #return average of the 2 middle array members
else #if amount of array members is odd
array[array.length/2.ceil] #return middle number
end
end
私の試みは、たとえば、長さが6で、3番目と4番目のインデックス値が7と9の配列です。
array[6/3+1] + array [6/3]
(array[4] + array[3]) /2
9 + 7 / 2
このエラーが表示されます
Error!
median returns the correct median of an even-length array
expected: 5.5 got: 6.0 (compared using ==)
より短い解決策を見てきましたが、たどろうとしている論理パスを理解できるかどうかが最も興味があります。一緒に遊んでくれてありがとう!
私が見た解決策:
def median(array)
sorted = array.sort
len = sorted.length
return (sorted[(len - 1) / 2] + sorted[len / 2]) / 2.0
end