문제

정렬 된 배열이 있습니다.

array = [[4, 13], [1, 12], [3, 8], [2, 8], [0, 3]]

이것은 나에게 위치 (배열 [n] [0])와 해당 위치의 발생 수 (배열 [n] [1])를 보여줍니다.

배열의 하나 이상의 항목이 마지막 항목과 같은 수의 발생을 가지고 있는지 테스트해야합니다.

나는 이것으로 그것을 할 수 있다고 생각했다 :

array.detect {|i| i[1] == array.last[1] }.length

그러나 위의 배열에 대해 2를 반환하고 다음 배열에 대해서도 2를 반환하는 것 같습니다.

array = [[4, 13], [1, 12], [3, 8], [2, 3], [0, 3]]

길이없이 실행하면 항상 첫 번째 발생을 반환합니다.

이런 일을 계산할 수있는 방법이 있습니까?

편집하다:

죄송합니다. 새로운 질문으로 후속 질문을하겠습니다.

도움이 되었습니까?

해결책

사용해보십시오 find_all 대신에 detect. detect 첫 번째 경기를 반환합니다. 첫 번째 예에서는 그게 그렇습니다 array[3], 이것은 길이 2의 또 다른 배열입니다. 이것이 2를 반환하는 이유입니다 (배열의 경우 항상 2 또는 nil을 반환해야합니다). find_all 첫 경기 자체 대신 일치 배열을 반환하며 길이는 원하는 값입니다.

다른 팁

다음은 관련 걱정과 함께 원하는 것을하는 명확한 방법입니다.

array.count{|i| i[1] == array.last[1]}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top