2017-12-04 14 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のAdvent of Codeで作業している場合は、プログラミング@ jsoftwareに参加することをお勧めします。 comのメーリングリスト。私たちは解決策やアプローチについて多くの楽しみを持っています! –

答えて

2

私はadventofcodeで3日目の第2回の問題を解決しようとしていると思いますか?そうでなければ、あなたの質問を間違って解釈しているかもしれません。

キーはアイテムを1つずつ割り当てるので、以下のように、私はおそらくこれをコーディングしますのは、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 
関連する問題