CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Python]: Déterminer tous les anagrammes d'un mot

GommeBlanche
GommeBlanche
Niveau 8
17 décembre 2020 à 19:52:03

Bonsoir, je dois faire un programme pour déterminer tous les anagrammes d'un mot, cependant je me retrouve bloqué ...
Voici ce que j'ai déjà réalisé :

mot=str(input("Entrez un mot: "))
taillemot=len(mot)
liste=list(mot)
nb_combinaisons=1

for i in range(taillemot): #Dénombrement du nombre de combinaisons possible
    nb_combinaisons=nb_combinaisons*(i+1)
print(nb_combinaisons)
listecombinaisons=[]

for loop in range(nb_combinaisons):
    liste[0], liste[1] = liste[1],liste[0]

J'aimerais avoir une piste de quelle manière résoudre ce problème.

Azerban
Azerban
Niveau 16
17 décembre 2020 à 20:15:31
import itertools

def anagrams(word):
    return list("".join(anagram) for anagram in itertools.permutations(word))

print(anagrams("abc"))

Retourne :

['abc', 'acb', 'bac', 'bca', 'cab', 'cba']
GommeBlanche
GommeBlanche
Niveau 8
17 décembre 2020 à 20:34:13

Le 17 décembre 2020 à 20:15:31 Azerban a écrit :
import itertools def anagrams(word): return list("".join(anagram) for anagram in itertools.permutations(word)) print(anagrams("abc"))

Retourne :

['abc', 'acb', 'bac', 'bca', 'cab', 'cba']

Ah bah merci khey c'est plus simple que ce que je pensais.

Azerban
Azerban
Niveau 16
17 décembre 2020 à 20:34:22

Sinon tu peux taper "python permutations algorithm" sur google et t'as environ 1 680 000 résultats.

Tu as aussi des tutos sur youtube : https://www.youtube.com/watch?v=hqijNdQTBH8

GommeBlanche
GommeBlanche
Niveau 8
17 décembre 2020 à 20:47:59

Le 17 décembre 2020 à 20:34:22 Azerban a écrit :
Sinon tu peux taper "python permutations algorithm" sur google et t'as environ 1 680 000 résultats.

Tu as aussi des tutos sur youtube : https://www.youtube.com/watch?v=hqijNdQTBH8

Merci la prochaine fois je penserais a faire une recherche en anglais.

Pseudo supprimé
Pseudo supprimé 19 décembre 2020 à 00:22:50

Perso je ferais un ensemble des lettres du mot (avec non unicité des lettres bien sûr) et comparerait ça aux autres sets des mots qui existent, comme ça t’as des mots de la langue française directement.
En parsant sur une liste comme ça https://www.freelang.com//dictionnaire/dic-francais.php (et en enlevant potentiellement les accents, selon la sévérité que tu veux).
Parce que le nombre de permutations ça croît très vite mine de rien.

Azerban
Azerban
Niveau 16
19 décembre 2020 à 13:49:37

Sur Linux (et aussi sur MacOS je pense) il y a différents dictionnaires de mots pour les traductions ou diverses utilisations. Par exemple, si on fait un :

wc -l /usr/share/dict/french

Ça renvoie:

139719

Soit autant de mots en français.

On peut ensuite s'amuser à les comparer à nos résultats pour avoir une liste de mots valides.

with open('/usr/share/dict/french') as f:
    french_words = {word.strip() for word in f.readlines()}

for anagram in anagrams('langue'):
    if anagram in french_words:
        print(anagram)

Retourne:

langue
lagune
Message édité le 19 décembre 2020 à 13:51:00 par Azerban
Azerban
Azerban
Niveau 16
19 décembre 2020 à 14:15:06
mots = ['argent', 'aimer', 'chien', 'orange']

with open('/usr/share/dict/french') as f:
    french_words = {word.strip() for word in f.readlines()}

for mot in mots:
    print(f"Anagrammes de '{mot}':")
    for anagram in anagrams(mot):
        if anagram in french_words and anagram != mot:
            print(anagram)
    print()

Retourne:

Anagrammes de 'argent':
ragent
garent
ganter
grenat

Anagrammes de 'aimer':
maire
marie

Anagrammes de 'chien':
niche

Anagrammes de 'orange':
organe
onagre
rongea

J'ai découvert le mot "onagre" :(

Message édité le 19 décembre 2020 à 14:17:10 par Azerban
Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment