Bonjour,
J'essaye de faire cet exercice et je suis bloqué (je suis nouveau en programmation). J'ai trouvé une méthode pour trouver les anagrammes qui marche sur le papier et que j'ai écrite clairement. Ca donne ça :
Pour le mot:
Renvoyer le mot
et en créer un autre en permutant les deux premières lettres
Puis pour chacun des deux mots obtenus:
en créer un autre en permutant la troisième et la deuxième lettre
et un autre en permutant la deuxième lettre et la première lettre
(à partir du mot obtenu)
Puis pour chacun des quatre mots obtenus:
en créer un autre en permutant la quatrième lettre à la troisième lettre
et un autre en permutant la troisième lettre et la deuxième
et un autre en permutant la deuxième et la première lettre
Puis pour chacun des seize mots obtenus:
en créer un autre en permuttant la cinquième et la quatrième lettre,
et ainsi de suite...
A partir de là j'ai fait des bouts de code pour permutter les lettres à l'intérieur du mot :
Voilà, maintenant l'idée pour pouvoir écrire la fonction, c'est que chacune de ces lignes de code puisse s'appliquer aux résultats de la précédentes. Et là je sèche...Si quelqu'un peut m'indiquer comment faire...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #Le code qui permutte les deux premières lettres du mot: set(chaine[:i]+chaine[i+1]+chaine[i]+chaine[i+2:] for i in range(0,1)) #Le code qui permutte la troisième et la deuxième lettre du mot: set(chaine[:i]+chaine[i+1]+chaine[i]+chaine[i+2:] for i in range(1,2)) #Le code qui permutte la quatrième et la troisième lettre du mot: set(chaine[:i]+chaine[i+1]+chaine[i]+chaine[i+2:] for i in range(2,3)
PS: je sais que mon code ne sera de toute façon pas optimisé, et que tout ça doit pouvoir être factorisé mais j'en suis clairement pas encore là.
Partager