2013-05-05 56 views
2

我有一個具有序列值的大陣列。 要檢查是否到位X的值對地方上的值的影響X +距離 我想找到所有對在紅寶石陣列中找到具有距離的對

pair = [values[x], values[x+1]] 

下面的代碼工作

pairs_with_distance = [] 
values.each_cons(1+distance) do |sequence| 
    pairs_with_distance << [sequence[0], sequence[-1]] 
end 

,但它看起來複雜我不知道,如果,如果我把它縮短,清晰

回答

2

您可以直接使用map使代碼更短:

pairs_with_distance = values.each_cons(1 + distance).map { |seq| 
    [seq.first, seq.last] 
} 

我喜歡的東西像下面的例子,因爲它具有短代碼,讀行,因爲它分離的步驟 - 的做法,讓你給(在這種情況下groups)一個有意義的名字,以中間計算。你可能會根據應用程序的真實域名想出更好的名字。

values = [11,22,33,44,55,66,77] 
distance = 2 

groups = values.each_cons(1 + distance) 
pairs = groups.map { |seq| [seq.first, seq.last] } 

p pairs