一般,你如何確定如何基於已知模式來遍歷數組?如何映射來自特定(已知)模式的新數組?
具體地說,這是圖案我想遍歷,返回數組的數組:(每個數字是原始數組的索引值:[0,1,2,3])
0,1
0,1,2
0,1,2,3
1,2-
1,2,3
2,3-
一般,你如何確定如何基於已知模式來遍歷數組?如何映射來自特定(已知)模式的新數組?
具體地說,這是圖案我想遍歷,返回數組的數組:(每個數字是原始數組的索引值:[0,1,2,3])
0,1
0,1,2
0,1,2,3
1,2-
1,2,3
2,3-
這裏的另一個更簡潔的替代:
a.size.times { |i| (a.size - i).times { |j| p a[i..j+i] } }
同意。這個更好。 – SimonMayer 2012-01-30 09:28:05
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
謝謝,這似乎是訣竅,但是你是否已經找到了解決方案?是否有像這樣通過模式迭代思考的方式? for循環可以簡化爲數學問題嗎? – 2012-01-30 03:12:16
它基本上是數學的。我可以看到你的模式有兩個循環:一個迭代並確定數組的第一部分;另一個(包含在)中迭代並確定每個數組的長度。 就方法而言,我想我是按同樣的順序解決的。首先得到起點'i'。接下來我介紹瞭如何在'i'處開始數組,並將其分割爲更長的'j'。 – SimonMayer 2012-01-30 09:36:14
你能舉一個你想做什麼的例子嗎? – oldergod 2012-01-30 01:10:48
上一張海報@SimonMayer得到了我所瞄準的要點 – 2012-01-30 03:14:00