Algorithme du nbre de combinaisons avec 8 chiffres

Messages postés
78
Date d'inscription
vendredi 26 février 2010
Statut
Membre
Dernière intervention
8 juin 2016
-
Bonjour,

Je détermine dans un table 8 chiffres de 0 à 9 tiré au hasard

exemple 0 7 3 5 6 0 1 2

une fois ce tirage effectué, je souhaite visualiser toutes les combinaisons possibles avec ces 8 chiffres
Pour ce faire j'utilise des boucles encastrées en déplaçant les chiffres

il y a 7 niveaux pour décaler le 5 puis le 3 puis le 2 et ainsi de suite
mais je me rend compte qu'une fois ces 7 niveaux effectués
Il faut l'appliquer a autant de combinaisons que peut me proposer ces 8 chiffres
en refaisant les 7 boucles et ainsi de suite
1er combinaison 0,5,3,2,1,7,7,3
2eme combinaison 0,3,2,1,7,7,3,5 par exemple
et là j'avoue que je sèche pour trouver un code simple

taboperation = [0,5,3,2,1,7,7,3];
       for (i1 = 1; i1 < 6; i1++) {  
        for (i2 = 1; i2 < 6; i2++) {
            for (i3 = 1; i3 < 7; i3++) {
                var transfert = taboperation[i3 + 2];
                taboperation[3i + 2] = taboperation[3i + 1]
                taboperation[3i + 1] = transfert;
            }
            
            transfert = taboperation[i2 + 3];
            taboperation[i2j + 3] = taboperation[i2 + 2]
            taboperation[i2 + 2] = transfert;
alert (taboperation);
        }
    }
}



Pierre Nonclercq
Afficher la suite 

2 réponses

Messages postés
107
Date d'inscription
mardi 30 juillet 2013
Statut
Membre
Dernière intervention
17 avril 2019
5
0
Merci
Bonjour,

En python ce serait hyper simple, le code suivant de 2 lignes donnent toutes les permutations sans doublons :

import itertools as it
sol=set(it.permutations([0,7,3,5,6,0,1,2]))



Si cela doit être fait avec du Javascript que je ne pratique pas, il suffit de traduire le code python suivant en Javascript :

def comb(s,u,sol):
    if len(u)==0:
        if s not in sol:
            sol.append(s)
            print len(sol),' : ',s
    else:
        for i in u:
            u1=u[:]
            u1.remove(i)
            comb(s+[i],u1,sol)

sol=[]
u=[0,7,3,5,6,0,1,2]
comb([],u,sol)



Cordialement,
hb
titan3131
Messages postés
78
Date d'inscription
vendredi 26 février 2010
Statut
Membre
Dernière intervention
8 juin 2016
-
merci pour la réponse
en fait j'ai trouvé une autre solution à mon problème
Cordialement
Commenter la réponse de hbouia
Messages postés
1717
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
15 octobre 2019
47
0
Merci
bonjour

il serait bien que quand le problème est résolu que tu mette la discussion en résolu.
Commenter la réponse de @karamel