아마도 좀더 일반적인 질문은 Ruby에서 목록 이해하는 것입니다.Ruby : 두 개의 다른 배열을 결합하고 인터리브하여 배열을 만드는 방법
수 N 부여의가 있다고 가정 해 봅시다 (= N 말 5) 나는이 같은 배열 싶어 : 내가 할 수있는 필수 방법을 사용
[[0, 1], [0, 2], [0, 3], [0, 4], [1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
을 :
arr = []
N = 5
(0..N-1).each do |i|
(i+1..N-1).each do |j|
arr << [i, j]
end
end
puts arr
기능적인 방법을 사용 :
(0..N-1).collect{|el1| (el1+1..N-1).collect{|el2| [el1, el2]}}.flatten.each_slice(2).to_a
두 번째 예제는 배열이 올바른 순서로 정렬된다는 사실에 의존합니다. 기능적인 방법으로 배열을 가져 오는 더 깨끗한 방법이 있습니까 (추가 병열 및 조각 제외)?
감사합니다. Arup! 여기서 flat_map이 핵심입니다 : (0..N-1) .flat_map {| el1 | (el1 + 1..N-1) .map {| el2 | [el1, el2]}} – Andrei
또한 배열을 조합 할 때 제품 기능이 매우 강력합니다. 배열에서 오는 두 숫자의 모든 순열을 얻기 위해 전에 사용했습니다. 아주 아름다운 응용 프로그램, Arup, 고마워. – Andrei