0

我有一条带有以下起点和终点 (0,3) 的线,这意味着它也经过点 1,2。我有另一条线,起点和终点 (2,4) 通过点 3。使用 Ruby,我试图找到一组位于第一行而不是第二行的点。在此示例中, (0, 2) 是所需的输出。

我尝试创建一个范围(0..3),然后将其转换为 array (0..3).to_a。我也对第二行坐标做了同样的事情,即(2..4).to_a.

我试图获取一个数组中不包含在另一个数组中的内容。当我减去数组时,即(0..3).to_a - (2..4).to_a得到 [0,1]。我想得到[0,2]。关于如何实现这一目标的任何想法?

4

1 回答 1

1

这是你想要的?(如果是这样,问题在于找出问题,而不是答案。)

def doit(a, b)
  a.to_a.reject {|e| e > b.first && e < b.last}
end

doit (0..3),(2..4)  # => [0,1,2]
doit (0..4),(2..4)  # => [0,1,2,4]
doit (0..3),(0..4)  # => [0]
doit (1..3),(0..4)  # => []
doit (0..3),(-3..1) # => [1,2,3]
doit (1..3),(2..2)  # => [1,2,3]
doit (1..4),(2..3)  # => [1,2,3,4]

或者

def doit(a, b)
  a = a.to_a
  b.size < 3 ? a : a-(b.first+1..b.last-1).to_a  
end
于 2013-10-25T20:22:22.057 回答