2017-12-02 11 views
2

목록이 두 개씩 그룹화 된 후 목록에서 일치하는 요소의 쌍을 찾아야합니다.컬렉션을 두 개의 쌍으로 나눕니다.

e.e. 1 1 2 3 2 21 1 2 2을 반환하지만 1 2 2 1은 두 개가 다른 상자에 있기 때문에 아무 것도 반환하지 않습니다.

내 생각은 상자를 만든 다음 마스크를 적용하여 일치하는 쌍을 얻는 것이었지만 쌍으로 된 복싱 단계를 파악할 수는 없습니다. 어떻게 pairwise 복싱을 할 것 인가? 이 일을해야

답변

1

는 (내 문제에 대한 또 다른 해결책은뿐만 아니라 흥미로운 일이 될 것입니다,하지만 난 페어 권투 솔루션에 관심이 있어요).

_2 ]\ 1 2 2 1 
1 2 
2 1 

이것은 Infix라고 불리는 dyad를 기반으로합니다. 이 링크에서 그것에 대해 더 많은 : http://www.jsoftware.com/help/dictionary/d430.htm

사람 상자, 박스 바로 동사에 부사 \을 적용 <

_2 <\ 1 2 4 5 4 6 2 1 
+---+---+---+---+ 
|1 2|4 5|4 6|2 1| 
+---+---+---+---+ 
+3

또는 사용'_2 <1 2 3 4 5 4 6 2 1 ' – Tikkanz

+2

\가 본 것이 정말해야 Tikkanz을 정화하지 I. 감사합니다. – bob

+0

사실 Dane이 내 대답을 정리 한 이래로 원래는 Tikkanz가 지적한 것 인'_2 <@] \ 1 2 4 5 4 6 2 1'이었습니다. – bob

1

건물 밥의 대답에, 당신은뿐만 아니라와 값의 쌍 조건 동사를 적용 할 수 있습니다 Infix (\) adverb :

_2 =/\ 1 1 2 3 2 2 
1 0 1 

당신이 t에하지 않는 박스 결과를 (필요가 있다고 가정하면,이 조건 적용 다음과 포장 된 결과를 얻을 수있는 직접적인 방법 그의 간단한 예) : 경우

((_2 =/\ ]) # _2 <\ ]) 1 2 2 1 

    ((_2 =/\ ]) # _2 <\ ]) 1 1 2 3 2 2 
┌───┬───┐ 
│1 1│2 2│ 
└───┴───┘ 

그것은 위의 괄호 (_2 =/\ ])와 조건 계산 불분명하다. 포크 규칙은 _2 <\ ]을 상자에 적용한 다음 f # g 포크로 조건부 결과와 일치하는 상자를 선택합니다.

2

일반적으로 가변 크기 목록을 처리하는 상황에서 상자를 사용하는 것이 좋습니다. 그렇지 않은 경우 성능 향상 (속도 향상 및 공간 축소)을 피하는 것이 가장 좋습니다. 이 버전은 상자를 사용하지 않습니다

_2 ,@(]\ #~ =/\) 1 1 3 4 2 2 
1 1 2 2 
    _2 ,@(]\ #~ =/\) 1 2 2 1