2012-05-29 2 views
1

중첩 배열을 허용하는 메서드를 만들려고합니다. 그 중첩 된 배열에서 하위 배열로 만들 수있는 모든 가능한 조합을 반환해야합니다. 나는 지금 몇 시간 동안 그 일을 해왔고 여전히 효과를 볼 수는 없다.루비에서 여러 배열 연결하기

이것은 sub_array의 각 요소를 다른 sub_arrays의 각 요소와 연결하는 것과 같습니다.

예 :

mega_array = [["a","b"],["c","d"],["e","f"]] 

my_method(mega_array) 

=> ["ace","acf","ade","adf","bce","bcf","bde","bdf"] 

이 다음 코드에 의해 수행 된 것입니다 :

mega_array[0].each do |first| 
    mega_array[1].each do |second| 
     mega_array[2].each do |third| 
      puts first + second + third 
     end 
    end 
end 

불행하게도, 하위 어레이의 수는 달라질 수 있습니다. 내가 붙어있는 곳이야. 몇 가지 재귀 적 기법을 시도했지만 여전히 올바르지 않습니다.

도움을 주시면 대단히 감사하겠습니다. 레오파드와 함께 제공되는 바닐라 루비로이 작업을해야합니다. 1.8.7이야. 맞지?

감사합니다.

답변

2
>> mega_array[0].product(*mega_array[1..-1]).map(&:join) 
=> ["ace", "acf", "ade", "adf", "bce", "bcf", "bde", "bdf"] 
+0

와우. 그것을 찍었어! 고마워요! – dashmug

관련 문제