2014-11-04 3 views
0

내 목표는이에서 이동하는 것입니다 먼저 첫 번째 항목을 나열, 그들에있는 항목의 모든 조합과 배열을 반환하는 방법이에루비 - 문자열의 두 배열을 가지고

first = ["on","in"] 
second = ["to","set"] 

를 :

def combinations(array_one,array_two) 
    results = [] 
    array_one.each do |x| 
     array_two.each do |y| 
      results << ["#{x}#{y}"] 
     end 
    end 
    results 
end 

이 retur :

["onto", "onset", "into", "inset"] 

내가 방법을 사용하여이를 달성하고자 지금까지 내가 얻을 수있는 가장 가까운 ns : [["onto"], ["onset"], ["into"], ["inset"]]

더 좋은 방법이 있나요?

답변

5

이 작동합니다 :

def combinations(first, second) 
    first.product(second).map(&:join) 
end 

combinations(%w(on in), %w(to set)) 
# => ["onto", "onset", "into", "inset"] 
+0

위대한 작품입니다. 감사합니다! 나는 궁금하다. 어떻게 제품을 사용하지 않고 이것을 해결할 수 있을까? –

+0

@MichaelBart 당신의 접근 방식은 정확하지만'results << [ "# {x} # {y}"] 대신에'results << "# {x} # {y}"'가 있어야합니다. –

+0

아하, 바보 같은 실수. 도와 주셔서 감사합니다. –

관련 문제