반응형
Ruby에서 두 배열의 조합
다음을 달성하는 Ruby 방법은 무엇입니까?
a = [1,2]
b = [3,4]
나는 배열을 원한다 :
=> [f(1,3) ,f(1,4) , f(2,3) ,f(2,4)]
를 사용 product
하여 배열의 데카르트 곱을 먼저 얻은 다음 함수 결과를 수집 할 수 있습니다.
a.product(b) => [[1, 3], [1, 4], [2, 3], [2, 4]]
따라서 map
또는 collect
을 사용 하여 결과를 얻을 수 있습니다 . 동일한 방법에 대해 다른 이름입니다.
a.product(b).collect { |x, y| f(x, y) }
a.map {|x| b.map {|y| f(x,y) } }.flatten
참고 : 1.8.7+ 1
에서는 flatten에 인수로 추가 할 수 있으므로 f
배열을 반환 할 때 올바른 결과를 얻을 수 있습니다.
다음은 임의의 배열 수에 대한 추상화입니다.
def combine_arrays(*arrays)
if arrays.empty?
yield
else
first, *rest = arrays
first.map do |x|
combine_arrays(*rest) {|*args| yield x, *args }
end.flatten
#.flatten(1)
end
end
combine_arrays([1,2,3],[3,4,5],[6,7,8]) do |x,y,z| x+y+z end
# => [10, 11, 12, 11, 12, 13, 12, 13, 14, 11, 12, 13, 12, 13, 14, 13, 14, 15, 12, 13, 14, 13, 14, 15, 14, 15, 16]
패싯은 Array#product
배열의 외적을 제공합니다. 또한 ** operator
2- 배열 케이스의 별칭으로도 지정됩니다 . 그것을 사용하면 다음과 같이 보일 것입니다.
require 'facets/array'
a = [1,2]
b = [3,4]
(a.product b).collect {|x, y| f(x, y)}
Ruby 1.9를 사용 product
하는 경우 내장 배열 함수입니다.
참고 URL : https://stackoverflow.com/questions/1543614/combination-of-two-arrays-in-ruby
반응형
'IT TIP' 카테고리의 다른 글
jsPDF 라이브러리를 올바르게 사용하는 방법 (0) | 2020.10.23 |
---|---|
목록의 모든 연속 항목 쌍을 반복합니다. (0) | 2020.10.23 |
JIRA JQL 날짜로 검색-Now () (DateTime) 대신 Today () (Date)를 얻는 방법이 있습니까? (0) | 2020.10.23 |
web.config 변환을 사용할 때 ReplacableToken_? (0) | 2020.10.23 |
Internet Explorer가 Quirks가 아닌 표준 모드에서 렌더링되도록하려면 어떻게해야합니까? (0) | 2020.10.23 |