0

嘿,我有一个数组,里面有数字。

现在我想将数组第 17 位的值除以数组第一个位置的值,然后将第 18 位除以第二个,依此类推。结果应该构建一个新数组。

然后我想扫描新数组的所有值,如果两个或多个连续值大于 1.2,我想为所有连续值添加第一个除以该行的最后一个值的结果。如果一个值为 1.2,而下一个值为 0.8,则不应更改数组的值。

这是我的代码:

a = [1,2,3,4,5,9,5,13,14,17,19,23,19,34,46,12,13,45,46,67,78,79]

b = Array.new
c = Array.new

a.each_cons(18) { |c| b.push(c[17]/c[0] }

您知道如何实施条件吗?

4

1 回答 1

1

我认为这会做到这一点,尽管我有选择地从你的问题中解释了一些事情。具体来说,在“所有连续值的那一行”中,“行”是指来自 each_cons 的滑块吗?“所有连续值”同上。

catch (:done) do
  for i in 2..b.length do
    b.each_cons(i) do |d| 
      for j in 2..d.length do 
        d.each_cons(j) do |g|
          if g.all? { |g| g > 1.2 }
            c = b.map { |f| f + (d[0].to_f/d[i-1].to_f) }
            break
          end
          if !c.empty? then throw :done end
        end
      end
    end
  end
end

puts c
于 2012-05-02T01:49:17.770 回答