Bonjour à tous,
Voici mon problème du moment:
J'aimerais déterminer par un programme en Python, toutes les combinaisons possibles et sans doublons, d'un nombre de 30 chiffres composé uniquement de 15 0 et de 15 1.
Exemple: 000000000000000111111111111111 (P.S: je voudrais garder les 0 non significatifs)
J'ai naturellement d'abords tenté une approche utilisant une génération aléatoire de nombre à partir d'une liste de 0 et de 1. Mais comme cela je ne sais pas comment faire pour que le programme ne fasse pas deux fois la même combinaison au hasard et puisse explorer toutes les combinaisons.
Alors j'ai fait ce algorithme qui détermine réellement toutes les combinaisons possible d'un nombre. Mais il y a des doublons et la quantité de mémoire pour un chiffre de 30 chiffres et juste impossible à gérer. (cf. algo suivant)
Alors j'avais pensé à une autre approche: comme le nombre de 30 chiffres et seulement composé de 0 et de 1 j'avais pensé que peut être par un certain moyen il serait possible de scinder le nombre en parties, déterminer toutes les combinaisons possibles de ces parties (car demande moins de mémoire), puis concaténer les possibilités. Mais je ne sais pas vraiment comment faire ça.Code:A0='000000000000000111111111111111' def perms(nums): if len(nums)==1: return [nums] else: all = [] for line in perms(nums[:-1]): for i in range(len(nums)): all += [line[:i] + nums[-1:] + line[i:]] return all
Quelqu'un aurait-il une solution à ce problème? ou une piste?
Merci.
-----