2012-03-14 44 views
0

我有一个矩阵和阵列内:红宝石 - 确定一个值位于矩阵列

m = Matrix[ 
[1, 2, 3], 
[11, 15, 20] 
] 

array = [11, 13, 14, 18] 

有一种方法,以确定哪些元素从顶部和每列的底部行之间的阵列谎言的矩阵?谢谢。

+0

您的问题声明是有点不清楚。你期望的结果是什么? – dbenhur 2012-03-15 00:10:21

回答

1

这不是完全清楚你所说的“之间”的意思,但一个简单的理解是:

def filter_array_between_first_and_last_rows_of_matrix(array,m) 
    lower = m.row_vectors.first.max 
    upper = m.row_vectors.last.min 
    array.select{|e| lower < e && e < upper} 
end 

这里有另一种解释:

def filter_array_between_first_and_last_rows_of_matrix(array,m) 
    bounds_pairs = m.column_vectors.map { |cv| [cv.first, cv[-1]] } 
    array.select {|e| bounds_pairs.any? { |lo,hi| lo < e && e < hi } } 
end 
+0

谢谢,第二个伎俩。我的意思是,最上面一行是上限,最下面一行是下限。对于那些查看此线程的人,请确保在'cv [-1]'后加上右括​​号。 – EHNole 2012-03-15 03:14:47