2011-12-13 4 views
1
source_array = Array.new(5) { Array.new(10) } 
source_array[3][4] = 0 
source_array[2][5] = 1 
source_array[4][2] = 0.5 

이제 source_array와 같은 크기의 새 배열 destination_array을 만들 수 있습니다. destination_array에는 0과 1 값만 들어 있습니다. destination_array 1에 오기 source_array지도의 모든 nil이 아닌 값, 모든 전무 값은 0Ruby에서 2D 배열을 새로운 배열로 투영하는 방법은 무엇입니까?

destination_array = Array.new(5) { Array.new(10, 0) } 
... 

(1.9.2) 루비에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까 매핑?

답변

3

생략 : 대신

destination_array = Array.new(5) { Array.new(10, 0) } 

그리고 사용 :

destination_array = source_array.map { |subarray| subarray.map { |item| item.nil? ? 0 : 1 } } 

이 당신이 원하는 당신을 줄 것이다.

여기서 중요한 것은 반복 기능 Array#map이 색인을 걱정할 필요가없는 방식으로 작업을 수행하도록하는 것입니다. 이것은 입력 및 출력 배열에 대해 동일한 치수를 원할 경우 모든 2 차원 배열에서 작동합니다.

2
destination_array = source_array.map { |arr| arr.map { |elem| elem.nil? ? 0 : 1 } } 
관련 문제