J'ai eu cet exercice algo classique: Combien de triplets somme à zéro dans ce tableau? Pas de problème en Java application du présent:3Sum utilisant pour dans 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;
Comment pourrais-je faire cela en Clojure bien? Je me suis demandé: Comment puis-je faire des boucles imbriquées à Clojure.
Mais this question and answer ne résout pas vraiment mon problème, car il prend deux tableaux identiques et combine tous les éléments (également les éléments identiques, par exemple 1 et 1).
Question connexe: Comment obtenir toutes les combinaisons de triplets d'une collection?
Remarque: Il nous a été explicitement demandé de ne pas trier le tableau. Je sais qu'il existe des algorithmes plus rapides pour cela.
EDIT: Ajout de «== 0» à la condition.
L'exemple de code Java retourne réellement combien de triplets ne somme pas à zéro ... –
Thank s @ marco.m pour avoir signalé mon erreur –