こんにちは、おすしです。
ary = [2, 3, 4, 23, 9, 15, 11]
def min_search(ary)
for i in 1..(ary.count - 1) do
if ary[0] > ary[i]
min = ary[i]
else
min = ary[0]
end
end
return min
end
def search(ary)
absolute_val = []
adds = 0
ary.count.times {|i| adds += ary[i]}
center = adds/ary.count
for i in 0..(ary.count - 1) do
n = 0
m = 0
if ary[i] <= center
m = center - ary[i]
else
n = ary[i] - center
end
if n <= m
l = m
else
l = n
end
absolute_val.push(l)
end
min_absolute = min_search(absolute_val)
for i in 0..(absolute_val.count - 1) do
if absolute_val[i] == min_absolute
p "配列の平均値である #{center} に最も近い値は #{ary[i]} です"
end
end
end
search(ary)
↑をコピペして実行してください。
配列の平均値に最も近い値を取り出します(正の数)
ご覧いただきありがとうございます!
追記
コメントでいただきました!
私が作成したアルゴリズムをたったの2行で完結させる美しいコードです。
ary = [2, 3, 4, 23, 9, 15, 11]
avg = ary.sum.fdiv(ary.size)
near=ary.min_by{|n| (n - avg).abs }
puts "配列の平均値である #{avg} に最も近い値は #{near} です"