rubyish 发表于 2013-12-24 23:56

[练习] 计算平均值

问题:

一个由 1, -1 组成的一个文件,其内容是:
1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 1

每个数字之间有空格隔开,现要逐级的计算每4个数的平均值,
第 1--4 位这4个数平均值,返回数值;
第 2--5 位的4个数返回一个平均值;
第 3--6 位这4个数返回一个平均值。
........

rubyish 发表于 2013-12-25 04:31

#!/usr/bin/ruby -w
s = DATA.gets.split.map(&:to_i)
puts (0..s.size-4).map {|i| s.inject(:+) / 4.0 } * ', '

__END__
1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1

rubyish 发表于 2013-12-25 04:31

本帖最后由 rubyish 于 2014-01-23 00:13 编辑

v2count   = 20
count_f = count.to_f
array   = DATA.gets.split.map(&:to_i)
sum   = array.reduce(:+)
last    = array

puts ["%.2f" % (sum / count_f)].tap {|me|
array.each do |elem|
   me << "%.2f" % ((sum += elem - last) / count_f)
   last = elem
end
} * ', '


__END__
1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 1

rubyish 发表于 2013-12-25 04:31

本帖最后由 rubyish 于 2013-12-25 00:34 编辑

0.5, 0.5, 0.5, 0.5, 1.0, 0.5, 0.5, 0.5, 0.0, 0.0, 0.0, -0.5, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 1.0

ddd010 发表于 2014-01-16 22:05

请问DATA.gets.split.map(&:to_i)这是什么用法?

rubyish 发表于 2014-01-17 06:27

回复 5# ddd010

map(&:to_i)
map {|e| e.to_i }
   

ddd010 发表于 2014-01-17 08:50

rubyish 发表于 2014-01-17 06:27 static/image/common/back.gif
回复 5# ddd010

map(&:to_i)


兄弟,前面的DATA.gets.这个是什么意思?

Sevk 发表于 2014-01-17 15:30

ddd010 发表于 2014-01-17 17:13

Sevk 发表于 2014-01-17 15:30 static/image/common/back.gif
DATA 这个常量很少用吧
http://caiustheory.com/why-i-love-data



谢谢。。。。。。。。。。。。。。。
页: [1]
查看完整版本: [练习] 计算平均值