Ruby代码中的循环问题

Ruby代码中的循环问题,ruby,arrays,Ruby,Arrays,嘿,我有一个数组,里面有数字 现在我想将数组第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

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

现在我想将数组第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] }

你知道如何实施这一条件吗?

我认为这样就可以了,尽管我有选择地解释了你问题中的一些内容。具体地说,在“该行的所有连续值”中,“行”是否指来自每个选项的滑块?“所有连续值”同上


数组中的元素数是否总是固定的?同时发布中间结果和最终结果。否,元素数会发生变化中间结果是新的数组b。最后的结果就是我要寻找的:)“如果两个或多个连续值大于1.2”,那么您的整个数组(即连续值列表)可能会满足此条件。您是否希望每次都使用尽可能小的子集?
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