2017-09-11 5 views
1

Ruby 2.4를 사용하고 있습니다. 나는 숫자의 순서 배열을 가지고 있다면,이 배열의 최소 및 최대 값 사이에, 내 배열에 존재하지 않는 숫자 요소를 어떻게 찾을 수 있습니까배열에서 간격을 찾으려면 어떻게합니까?

[1, 2, 4, 7, 8, 9] 

말? 내 배열

[2, 7] 

라면 위의 예를 들어, 누락 된 값은

[3, 5, 6] 

내가 찾고있을 것 누락 된 값이 기존 번호를 제거

[3, 4, 5, 6] 

답변

6

것입니다 예상 숫자 범위에서 :

(numbers.first..numbers.last).to_a - numbers 
2

복잡한 솔루션을 선호하는 경우 :

[1, 2, 4, 7, 8, 9].chunk_while { |a, b| a + 1 == b } 
        .each_cons(2) 
        .flat_map { |x, y| (x.last + 1).upto(y.first - 1).to_a } 
#=> [3, 5, 6] 
관련 문제