Solveur d'anagrammes Java


Je peux trouver comment créer des anagrammes d'une chaîne mais je ne sais pas comment les comparer à un dictionnaire de mots réels pour vérifier si l'anagramme est un vrai mot. Existe-t-il une classe dans l'API Java qui contient tout le dictionnaire anglais?

Author: Alex, 2010-04-24

5 answers

Non, mais vous pouvez obtenir une liste de mots à partir de divers endroits. De là, vous pouvez lire le fichier wordlist dans une liste:

List<String> lines = new ArrayList<String>();
BufferedReader in = new BufferedReader(new FileReader("wordlist.txt"));
String line = null;
while (null!=(line=in.readLine()))
{
   lines.add(line);
}
in.close();

Et enfin recherche binaire utiliser lines.contains() pour votre mot candidat.

 5
Author: sblom, 2010-04-24 18:08:14

Une méthode pour déterminer si un ensemble de caractères est une anagramme d'un mot consiste à utiliser des nombres premiers. Attribuer à chaque lettre un nombre premier, par exemple, a=2, b=3, c=5, d=7. Précalculez maintenant le produit des nombres premiers pour chaque mot de votre dictionnaire. Par exemple, "ajouter' = 2*7*7 = 98, ou "mauvais' = 3*2*7 = 42.

Maintenant déterminer si un ensemble de lettres est un anagramme d'un mot dans un dictionnaire peut être fait par le calcul de la valeur de l'ensemble des lettres. Par exemple, les lettres 'abd'= 2*3*7 = 42 = 'mauvais'. Vérifiez simplement si la valeur calculée pour les lettres existe dans votre dictionnaire précalculé. Pour toute anagramme, vous n'avez besoin de faire ce calcul qu'une seule fois plutôt que d'essayer de générer toutes les anagrammes possibles. Notez cependant que cette méthode ne fonctionnera que pour les mots relativement petits, sinon vous rencontrerez des problèmes de débordement et devrez utiliser BigInteger.

 2
Author: Andrew, 2010-04-24 20:11:57

Non, vous devez utiliser une bibliothèque externe, telle que JWNL, qui est un wrapper pour WordNet { une base de données lexicale lisible par machine organisée par meanings , qui contient à peu près tous les mots anglais.

 1
Author: João Silva, 2010-04-24 17:52:12

Peut-être que le dictionnaire anglais dans jazzy peut vous aider.

 1
Author: Yuval F, 2010-04-24 17:54:06

Il n'y a pas de telle classe spécialisée dans la bibliothèque Java standard, mais vous pouvez utiliser n'importe quelle implémentation de votre choix de l'interface Set et l'initialiser en la chargeant avec les mots de votre choix, choisis parmi l'une des innombrableslistes de mots que vous pouvez trouver dans de nombreux endroits (vérifiez simplement que la licence pour la liste de mots que vous choisissez est compatible avec votre application prévue, par exemple, ainsi de suite).

 1
Author: Alex Martelli, 2010-04-24 17:54:52