IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Correcteur d'ortographe [Débutant(e)]


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 10
    Points
    10
    Par défaut Correcteur d'ortographe
    Bonjour! Je suis une débutante en perl et en géneral en Informatique. Après avoir étudié langues pour plusieurs années, j'ai décidé à prendre un master en linguistique informatique. Mais ce n'est pas facile!
    Je voudrais bien m'entrainer avec perl et bien matriser le langage. J'ai un exercice à faire:

    Je devrais créer un correcteur d'ortographe qui puisse faire des hypothèses sur les erreurs que l'utilisateur a pu faire (donc suppression d'une lettre, ajout d'une lettre, modifie d'une lettre, inversion de deux lettres, etc), pour réussir à proposer des nouveaux mots.

    Malheuresement à la fac on n'a pas fait un cours d'algorithmes, meme si je pense qu'il pourrait etre très utile.

    J'avais pensé à une solution:
    1. faire un petit test utilisant juste quelques mots dans un tableau (comme dictionnaire)
    2. entrer un mot à corriger
    3. examiner avec "grep" si le mot se trouve dans le tableau
    4. si la réponse est negative, faire une comparaison entre le mot tapé par l'utilisateur et les mots sur le dictionnaire.

    En ce qui concerne le 4, j'avais pensé à stocker le mot tapé par l'utilisateur dans un tableau, lettre par lettre. Après je voudrais bien effacer une lettre à la fois et vérifier si le mot est présent ou pas dans le dictionnaire.

    c'est-à-dire: si j'ai écrit "mannger", les operations à faire seront
    --> mannger : n'existe pas dans le dictionnaire
    --> annger : no
    --> mnnger : no
    --> manger : oui

    Comment je pourrais faire ça?

    Excusez-moi pour les fautes grammaticaux mais je ne suis pas meme française xD

    Merci!

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Bonjour et bienvenue.

    La fonction split est faite pour toi : elle "découpe" une chaine de caractère en éléments de tableaux en fonction d'un "séparateur".
    Dans ton cas, ton séparateur sera vide (puisque tu veux séparer toutes les lettres).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    use feature qw(:5.10);
    say "Enter a word:";
    chomp(my $word = <STDIN>);
    my @word = split //, $word;
    Ensuite, tu pourras utiliser la fonction splice pour supprimer une des lettres du tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach my $letter (0 .. $#word) {
      my @altered_word = @word;
      splice(@altered_word, $letter, 1);
      say "Trying ", join "", @altered_word;
    }
    Si tu ne comprends pas, n'hésite pas à demander. Essaye de programmer cela pour commencer, et reviens avec de nouvelles questions
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Autre chose utile, si tu disposes de perl 5.10 minimum : au lieu d'utiliser un grep dans le dictionnaire, tu peux utiliser l'opérateur "Smart matching" (~~) documenté dans perlsyn (perldoc perlsyn).
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my @dico = qw(manger boire dormir travailler);
    my $word = "manger";
    if ($word ~~ @dico) {
      say "TROUVE !!";
    }
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    Merci! J'essaie tout de suite ! Ehm.. question bete: comment puis-je vérifier quelle est ma version de Perl?

    Je déjà rémarqué que tu utilises "say" à la place de "print" ! ça depend de la version?

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    foreach my $letter (0 .. $#word) {
    my @altered_word = @word;
    splice(@altered_word, $letter, 1);
    print " Trying" , "\n" , join "", @altered_word;
    }

    si j'ai bien compris:
    1_pour chaque lettre qui va de la position zéro au dernier élement du tableau,
    2_je crée un tableau qui a les memes élements du tableau @word,
    3_ à partir du tableau @altered_word, à la position initiale de $letter (c'est à dire de 0 à la fin du mot) jusqu'à 1, on efface une lettre.

    maintenant je pourrais introduire une boucle if et dire "si l'expression trouvé "match" avec l'expression du dico, je la prends !

    ça va?

    Les mots analysés sont-ils dans le tab @altered_word? si je fais :

    if ($altered_word[$i] eq $word)
    {
    print "it's ok\n"
    }
    else
    {
    print "it's not ok"
    };

    il me dit que je n'ai pas initialisé le tab @altered_word.. pourquoi?

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Citation Envoyé par Jurafsky Voir le message
    Merci! J'essaie tout de suite ! Ehm.. question bete: comment puis-je vérifier quelle est ma version de Perl?
    Je déjà rémarqué que tu utilises "say" à la place de "print" ! ça depend de la version?
    Pour être sur de pouvoir utiliser say, ajoute en début de script :
    Si ton script échoue parce que tu n'as pas une version supérieure ou égale à 5.10, dans ce cas, utilise print (et ajoute "\n" à la fin des chaines).
    Citation Envoyé par Jurafsky Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach my $letter (0 .. $#word) {
      my @altered_word = @word;
      splice(@altered_word, $letter, 1);
      print " Trying" , "\n" , join "", @altered_word;
    }
    Pense à ajouter la balise [CODE] pour poster ton code source (icône ).
    si j'ai bien compris:
    1_pour chaque lettre qui va de la position zéro au dernier élement du tableau,
    2_je crée un tableau qui a les memes élements du tableau @word,
    3_ à partir du tableau @altered_word, à la position initiale de $letter (c'est à dire de 0 à la fin du mot) jusqu'à 1, on efface une lettre.
    Un léger détail : à la position initiale de $letter, on supprime 1 élément (une lettre) ; on ne supprime pas "jusqu'à" 1 (le deuxième paramètre est une taille, pas un indice).
    maintenant je pourrais introduire une boucle if et dire "si l'expression trouvé "match" avec l'expression du dico, je la prends !

    ça va?
    Oui, c'est cela, sauf que pour un if on ne parle pas de boucle, mais de bloc conditionnel (dans les faits, on peut considérer que c'est une boucle de 0 ou 1 fois).
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    Les mots analysés sont-ils dans le tab @altered_word? si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if ($altered_word[$i] eq $word)
    {
    print "it's ok\n"
    }
    else
    {
    print "it's not ok"
    };
    il me dit que je n'ai pas initialisé le tab @altered_word.. pourquoi?

    à la fac on a toujours parlé de boucle pour "if"...ahhh!! Merci pour les corrections ! Je pense j'apprendrai plus ici que la-bas!

  8. #8
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Non, ce n'est pas tout à fait cela : @altered_word contient la liste des lettres du mot, pas le mot "reconstruit".
    Pour cela tu dois l'assembler à nouveau avant de le tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    my $altered_word = join "", @altered_word;
    if ($altered_word ~~ @dico) {
      say "$word seems to be misspelled. It should be $alterered_word";
    }
    else {
      say "$word seems to be misspelled. No word found in the dictionnary";
    }
    Tu peux remplacer le if par ceci (si tu ne disposes pas de la version perl 5.10) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (grep $altered_word eq $_, @dico) {
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    maintenant il le reconnait mais il ne réussit plus à reconnaitre le scalaire!

    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
    33
    #!/usr/bin/env perl
     
    use warnings;
    use Perl::Critic;
     
     
    my @altered_word;
    my $letter;
    my $i;
     
     
    print "Enter a word:\n"; 
    chomp(my $word = <STDIN>); 
    my @word = split //, $word;  
     
     
     
    foreach my $letter (0 .. $#word) 
    {  
        @altered_word = @word;
     
      if ($altered_word[$i] eq $word[$letter]) 
         {
             print "it's ok\n";
         }
     
      else 
        {
            splice(@altered_word, $letter, 1)
        }; 
     
     print " Trying" , "\n", join "", @altered_word;
     };
    Je suis nulle!

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    j'essaie !!

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    Après examens et mémoire j'ai répris le projet ! Mais il ne marche pas quand meme

    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
    print "Enter a word:\n";
    chomp(my $word = <STDIN>);
    my @word = split //, $word;
    my $dico = "manger"; #mot qui sera remplace après par un dico
     
    foreach my $letter (0 .. $#word) {
      my @altered_word = @word;
      splice(@altered_word, $letter, 1);
      print " Trying\n" , join "", @altered_word;
          if ($altered_word eq $dico) {
             my $altered_word = join "", @altered_word;
          }
    }
     
    print "\n$word seems to be misspelled. It should be $altered_word";
    Pouvez-vous m'aider? Je pense que je me suis trompée sur la position de "if" mais je n'ai aucune idée où je pourrais le positioner..

  12. #12
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Le if est au bon endroit, mais ce qu'il utilise n'est pas encore "contruit" ($altered_word).

    Essaye ceci :
    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
    print "Enter a word:\n";
    chomp(my $word = <STDIN>);
    my @word = split //, $word;
    my $dico = "manger"; #mot qui sera remplace après par un dico
     
    foreach my $letter (0 .. $#word) {
      my @altered_word = @word;
      splice(@altered_word, $letter, 1);
      my $altered_word = join "", @altered_word;
      print " Trying " , $altered_word, "\n";
      if ($altered_word eq $dico) {
        print "\n$word seems to be misspelled. It should be $altered_word";
        last; # Pour sortir de la boucle dès qu'on a trouvé un mot
      }
    }
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    Il est parfait!

    Maintenant Je voudrais faire "l'ajout" !

    Par exemple : apeler --> il faut ajouter une "p"

    je pensais donc mettre comme toujours le mot dans un array, après avec unshift, ajouter pour tous les elements de l'array (donc après chaque lettre), les lettres de l'alphabet jusqu'à quand le mot sera exact !

    est-ce qu'on peut écrire

    unshift(@altered_word, ('a'..'z')) ?

    ou il faut utiliser une expression régulière, ou il faut créer un tableau avec les lettres de l'alphabet?

  14. #14
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Citation Envoyé par Jurafsky Voir le message
    unshift(@altered_word, ('a'..'z')) ?
    On peut le faire, mais ça ne donnera sans doute pas le résultat attendu.

    Plutôt quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    foreach my $letter (0 .. $#word) {
      my @altered_word = @word;
      foreach my $letter_plus ('a' .. 'z') {
        splice(@altered_word, $letter, 0, $letter_plus);
        my $altered_word = join "", @altered_word;
        print " Trying " , $altered_word, "\n";
        if ($altered_word eq $dico) {
          print "\n$word seems to be misspelled. It should be $altered_word";
          last; # Pour sortir de la boucle dès qu'on a trouvé un mot
        }
      }
    }
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  15. #15
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    je viens de le voir sur la documentation de perl!

    Mais donc, est-ce qu'on peut dire que "splice" peut substituer tous les opérations sur tableaux comme unshift, push, etc??

  16. #16
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        splice(@altered_word, $letter, 0, $letter_plus)
    pourquoi on écrit "0" ?

  17. #17
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Citation Envoyé par Jurafsky Voir le message
    Mais donc, est-ce qu'on peut dire que "splice" peut substituer tous les opérations sur tableaux comme unshift, push, etc??
    Oui, on peut écrire unshift, push, shift et pop avec splice. Mais c'est moins lisible, que d'utiliser ces fonctions dédiées, qui par ailleurs ne nécessitent pas d'ajouter des paramètres non utilisés.

    Citation Envoyé par Jurafsky Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        splice(@altered_word, $letter, 0, $letter_plus)
    pourquoi on écrit "0" ?
    Le 0 est le 3e paramètre (LENGTH) : comme on souhaite seulement ajouter un élément dans le tableau, on souhaite en supprimer zéro (d'où le 0), comme l'indique l'aide :
    Removes the elements designated by OFFSET and LENGTH from an
    array, and replaces them with the elements of LIST, if any.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  18. #18
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Ton programme devrait cependant peut-être s'inspirer de la distance de Levenstein (voir cet article : http://www.easter-eggs.com/Recherche-approximative-avec)
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  19. #19
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    il semble vraiment interessant ! Malheuresement je n'ai pas encore résolu la question de l'ajout. Je vais copier le code cet après-midi (je suis au cours xD)

  20. #20
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 10
    Points
    10
    Par défaut
    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
    printprint "Enter a word:\n";
    chomp(my $word = <STDIN>);
    my @word = split //, $word;
    my $dico = "manger"; #mot qui sera remplace après par un dico
     
     
    foreach my $letter (0 .. $#word) {
      my @altered_word = @word;
      foreach my $ajout('m'  .. 'o') {
        splice(@altered_word, $letter, 0, $ajout);
        my $altered_word = join "", @altered_word;
        print " Trying " , $altered_word, "\n";
        if ($altered_word eq $dico) {
          print "\n$word seems to be misspelled. It should be $altered_word";
          last;
      }
    }
    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
    Enter a word:
    mager
     Trying mmager
     Trying nmmager
     Trying onmmager
     Trying mmager
     Trying mnmager
     Trying monmager
     Trying mamger
     Trying manmger
     Trying maonmger
     Trying magmer
     Trying magnmer
     Trying magonmer
     Trying magemr
     Trying magenmr
     Trying mageonmr
    Comment je pourrais lui dire d'effacer les lettres et essayer une après l'autre?

Discussions similaires

  1. Intégrer le correcteur d'ortographe dans une textbox
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/09/2008, 09h08
  2. [Info] Correcteur orthographique ?
    Par elitost dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 05/07/2005, 21h30
  3. Correcteur orthographique
    Par MistyBack dans le forum WinDev
    Réponses: 2
    Dernier message: 30/06/2005, 08h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo