J'ai besoin d'avoir un code qui retourne toutes les combinaisons possible d'une chaine de caractère.
Exemple : 'ABC' me donnerai ABC, ACB, BAC, BCA, CAB, CBA
Jusque la pas de problème car voici le code ^^:
function faire_combi(chaine, tmp, len, ind) {
if (ind >= len) {
$('#visu').append('<br /> tmp : '+tmp);
return;
}
for (var i = 0; i < len; i++) {
if (chaine[i] != '!') {
var pt = chaine[i];
var origineChaine = chaine;
chaine = chaine.substr(0, i);
chaine += '!';
chaine += origineChaine.substr(i+1, len);
tmp[ind] = pt;
faire_combi(chaine, tmp, len, ind+1);
chaine = origineChaine.substr(0, i);
chaine += pt;
chaine += origineChaine.substr(i+1, len);
}
}
}
var chaine = 'abc';
var len = chaine.length;
faire_combi(chaine, [], len, 0);
Mon soucis est que j'ai besoin de passer en paramètre un chiffre qui donnerai les combinaisons possible sur une longueur donnée.
Exemple : 'ABC' (avec ma fonction) en ajoutant le nouveau paramètre à la valeur 2 donnerai AB, AC, BC
J'ai trouvé un site qui me permettrai d'avoir le nombre de résultats possibles mais pas de les avoirs... (http://www.dcode.fr/generer-calculer-combinaisons)
Si quelqu'un aurait une solution à mon problème ce serait sympa.
Merci d'avance
PS: Si quelqu'un pouvait me dire pourquoi je peux pas remplir un tableau avec les différents résultats dans une case car à chaque fois le résultat se met dans la case 0 ça serait encore plus sympa
J'adore les forums les réponses foisonnent en tout cas si ça intéresse quelqu'un voici la solution que j'ai fini par trouver :
function comb(L, t, n ,k, combliste) {
if(n<k) {
return "";
}
if(k==0) {
// combliste += "{"+L+"}, ";
combliste.push(L);
} else {
for(var i=0;i < n-k+1; i++) {
var L2 = L + t[i];
if(k>1) L2 += ", ";
var t2 = new Array();
var j = 0;
for(var r = i+1 ; r < n ; r++) {
t2[j] = t[r]
j++;
}
comb(L2, t2, j, k-1, combliste);
}
}
return combliste;
}
comb('', 'abc', 3, 2, []);
Ce qui donnera comme résultat : 'ab', 'ac', 'bc'
Liste de combinaisons
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.