2012-01-30 41 views
1

一般,你如何確定如何基於已知模式來遍歷數組?如何映射來自特定(已知)模式的新數組?

具體地說,這是圖案我想遍歷,返回數組的數組:(每個數字是原始數組的索引值:[0,1,2,3])

0,1

0,1,2

0,1,2,3

1,2-

1,2,3

2,3-

+0

你能舉一個你想做什麼的例子嗎? – oldergod 2012-01-30 01:10:48

+0

上一張海報@SimonMayer得到了我所瞄準的要點 – 2012-01-30 03:14:00

回答

1

這裏的另一個更簡潔的替代:

a.size.times { |i| (a.size - i).times { |j| p a[i..j+i] } } 
+0

同意。這個更好。 – SimonMayer 2012-01-30 09:28:05

2
arr = [0,1,2,3] 
main_array = [] 

arr.each_index{|i| 
    arr.each_index{|j| 
    if i <= j 
     a = arr[i..j] 
     main_array.push(a) 
    end 
    } 
} 
p main_array 
+0

謝謝,這似乎是訣竅,但是你是否已經找到了解決方案?是否有像這樣通過模式迭代思考的方式? for循環可以簡化爲數學問題嗎? – 2012-01-30 03:12:16

+0

它基本上是數學的。我可以看到你的模式有兩個循環:一個迭代並確定數組的第一部分;另一個(包含在)中迭代並確定每個數組的長度。 就方法而言,我想我是按同樣的順序解決的。首先得到起點'i'。接下來我介紹瞭如何在'i'處開始數組,並將其分割爲更長的'j'。 – SimonMayer 2012-01-30 09:36:14