2012-05-01 58 views
0

嘿,我有一個數組在其中。Ruby代碼中的循環問題

現在我想將數組中第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] } 

你有一個想法如何實現的條件?

+0

您是否總是有固定數量的元素在數組中? –

+1

發佈中間和最終結果。 –

+0

不,元素個數變化 – jeffrey

回答

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