私はこの古典的な練習をしました:この配列では、いくつのトリプルが合計で0になりますか?これをJavaで実装するのに問題はありません。3を使用してClojureで使用する
int count = 0;
for (int i = 0; i < array.length - 2; i++) {
(for int j= i+1; j < array.length -1; j++) {
(for int k = j + 1; k < array.length; k++) {
if (array[i] + array[j] + array[k] == 0) {
count++;
}
}
}
}
return count;
Clojureではどうしたらいいですか?私は自分自身に尋ねました:Clojureでネストループを実行するにはどうすればいいですか?
しかし、this question and answerは、2つの同一の配列を取り、すべての要素(同じ要素、例えば1と1など)を組み合わせるので、実際に私の問題には対処しません。
関連する質問:コレクションからトリプルのすべての組み合わせを取得するにはどうすればよいですか?
注:アレイを並べ替えないよう明示的に求められました。私はこれのためのより高速なアルゴリズムがあることを知っています。
EDIT:条件に "== 0"を追加しました。
サンプルJavaコードは、実際に何個のトリプルが0にならないかを返します。 –
ありがとう私のミスを指摘するための@ marco.m –