2017-12-04 3 views
0

컬렉션의 각 요소에 대해 컬렉션의 각 요소에 작업을 적용하고 싶습니다. 나는 다음과 유사한 작동 뭔가를 찾고 있어요 :각 요소를 사용하여 컬렉션의 모든 멤버에 작업을 적용하는 방법

result = [] 
for i in X: 
    for j != i in X: 
    if j % i == 0 (or whatever condition here) 
     result += j 

내가 컬렉션의 각 요소에 작업을 적용하는 부분을 알아낼 수 있지만, 나는 그것이 컬렉션의 각 요소를 사용하는 방법을 운영해야합니까 iterand 반대?

예를 들어, 내가 가지고있는 경우 2 3 5 84; ; ;과 같은 것을 어떻게 얻을 수 있습니까?

+0

귀하의 의사 코드는 제게 익숙하지 않습니다. 특히'4; ; ;'나타날 수있는 결과를 쓸 수 있습니까 (아니면 실제로'4 ;;;'로 보일 수 있습니까?) – bob

+1

J의 강림 대원에서 일하는 경우 프로그래밍 @ jsoftware에 가입하는 것이 좋습니다. com 메일 링리스트; 우리는 솔루션과 접근법에 대해 많은 재미를 가지고 있습니다! –

답변

2

3 일째 adventofcode의 2 부에서 문제를 해결하려고합니다. 그렇지 않은 경우 귀하의 질문을 잘못 해석했을 수 있습니다.

의 핵심은 전체 배열에-A-시간을 생각하는 것입니다하지 아이템에-A-시간 때문에 다음의이을 for i in X:

]jnei=: ~:/~ 2 3 5 8    NB. for j != i in X: 
0 1 1 1 
1 0 1 1 
1 1 0 1 
1 1 1 0 

    ]dividesExactly=: 0 = |~/~ 2 3 5 8 NB. if j % i == 0 
1 0 0 0 
0 1 0 0 
0 0 1 0 
1 0 0 1 

    mask=: jnei *. dividesExactly  NB. both conditions 
0 0 0 0 
0 0 0 0 
0 0 0 0 
1 0 0 0 

    %/~ 2 3 5 8       NB. divisions to choose from 
    1 0.666667 0.4 0.25 
1.5  1 0.6 0.375 
2.5 1.66667 1 0.625 
4 2.66667 1.6  1 

    mask * %/~ 2 3 5 8     NB. evenly divided, off-diagonals 
0 0 0 0 
0 0 0 0 
0 0 0 0 
4 0 0 0 

    +/ , mask * %/~ 2 3 5 9    NB. ravel and sum to return 4 
4 

나는 것 가능성이 코드를 무시하자

+/ , (%/~ * ~:/~ *. 0 = |~/~) 2 3 5 8 
4 
관련 문제