Bonjour à tous,
Je ne pensais pas rencontrer ce genre de problème en Perl un jour, mais là, j' .
Je dispose d'un lexique de noms propres, une forme par ligne dans un fichier texte trié par les bons soins de la fonction sort du plus petit au plus grand. Dans ce fichier, "Allemagne de l'Est" se situe avant "Allemagne".
Le problème, c'est que quand je fais une recherche dichotomique sur ce fichier, j'utilise la fonction lt pour savoir si le mot que je cherche est situé avant ou arpès le mot que je teste, et que cette fonction considère que la forme "Allemagne" est plus petite que la forme "Allemagne de l'Est". Résultat, à chaque fois que j'ai une forme simple et une forme composée à partir de celle-ci dans mon lexique, ma recherche n'aboutit pas.
voici le code de ma recherche:
Je ne vois pas comment faire ma comparaison sans lt, quelqu'un pour m'éclairer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 my ($forme1) = shift @_; #initialisation des variables pour la recherche dichotomique my ($debut)=0; my ($fin)=$#lexique_NP; my ($tampon)=0; my ($milieu); #comparer les deux listes while($debut<=$fin) { $milieu= ($debut+$fin)/2; $milieu=~s/(.*),.*/$1/; chomp $lexique_NP[$milieu]; #si la forme est identifiée, modifier la valeur de tampon if($forme1=~/^$lexique_NP[$milieu]$/i){ $tampon=1; $debut=$fin+1; } elsif($forme1 lt $lexique_NP[$milieu]){ $fin=$milieu-1; } else{ $debut=$milieu+1; } } return($tampon);
Merci par avance
Partager