(Ruby) How do you check whether a range contains a subset of another range?

后端 未结 10 1486
轻奢々
轻奢々 2021-02-05 11:06

If I have two ranges that overlap:

x = 1..10
y = 5..15

When I say:

puts x.include? y 

the output is:

10条回答
  •  面向向阳花
    2021-02-05 11:40

    But if I want it to be "true" when there is partial overlap between two ranges, how would I write that?

    You can convert the ranges to an array, and use the & operator (conjunction). This returns a new array with all the elements occuring in both arrays. If the resulting array is not empty, that means, that there are some overlapping elements:

    def overlap?(range_1, range_2)
      !(range_1.to_a & range_2.to_a).empty?
    end
    

提交回复
热议问题