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

Prolog Discussion :

string sans caractéres spéciaux


Sujet :

Prolog

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut string sans caractéres spéciaux
    je veux construire un programme prolog qui supprime les caracéres spésciaux d'une chaine de caractére comment je peu le realiser SVP

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Quel prolog utilisez-vous ?
    Qu'avez-vous tenté ? Quels sont les problèmes que vous rencontrez ?
    Comment définissez-vous ce que vous appelez les caractères spéciaux ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut un petit programme pour supprimer l'espace balnc j’utilise swi prolog 6.4.1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    netEntr(E,R):-string_length(E,L),
                 (	 sub_string(E,0,_,_,'\s') , L >0,L1 is L-1 ,sub_string(E,1,L1,_,R),writeln(R), netEntr(R,R2));
    	    (	 not(sub_string(E,0,_,_,'\s')),writeln(E),R=E,writeln(R))
    .
    mais le resultat est erroné

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Bonjour

    Vous utilisez un style impératif à éviter en Prolog ! (en l(occurence string_length).
    Utilisez plutôt une approche "fonctionnelle" possible avec maplist.
    Une string peut-être trensformée en liste de caractères à l'aide de string_chars, ensuite travaillez sur la liste puis recréez votre string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    % verification d'un caractère
    netcar(Bad, In, Out) :-
    	member(In, Bad)
    	-> Out = ' '
    	;  Out = In.
     
    netEntr(In, Bad, Out) :-
    	string_chars(In, CIn),
    	maplist(netcar(Bad), CIn, COut),
    	string_chars(Out, COut).
    Exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ?- netEntr("acde",[a,d], Out).
    Out = " c e".
    On peut améliorer la méthode ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    netcar(Rep, In, Out) :-
    	member(In-R, Rep)
    	-> Out = R
    	;  Out = In.
     
    netEntr(In, Rep, Out) :-
    	string_chars(In, CIn),
    	maplist(netcar(Rep), CIn, COut),
    	string_chars(Out, COut).
    Avec comme résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ?- netEntr("acde",[a-x,d-y], Out).
    Out = "xcye".

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    j'ai juste besoin d'un programme qui supprime le blanc au les tabulations d'une chaine de caractére dans l'avant exp s=' write('bounjour') le resultat est R='write('Bonjour').

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Ok, comm d'hab, j'ai lu en diagonale la question.
    On peut utiliser un esprit "fonctionnel" avec foldl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    netcar(Bad, In, Acc, NewAcc) :-
    	member(In, Bad)
    	-> NewAcc = Acc
    	;  append(Acc, [In], NewAcc).
     
    netEntr(In, Rep, Out) :-
    	string_chars(In, CIn),
    	foldl(netcar(Rep), CIn, [], COut),
    	string_chars(Out, COut).
    Avec comme résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     15 ?- netEntr(" write('bonjour')",[' '], Out).
    Out = "write('bonjour')".

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    merci pour aide

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    j'ai voulu dessiner un graphe avec grapheviz et prolog est ce qu'il possible

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Il existe des possibilités :
    https://github.com/wouterbeek/plGraphViz
    http://www.swi-prolog.org/pack/list?p=callgraph

    Jamais testé mais étant donné les auteurs, ça devrait bien fonctionner.

Discussions similaires

  1. String sans caractères
    Par CliffeCSTL dans le forum Langage
    Réponses: 2
    Dernier message: 01/06/2015, 10h56
  2. TextBox sans caractères spéciaux
    Par majduuus dans le forum ASP.NET
    Réponses: 1
    Dernier message: 05/09/2013, 11h43
  3. Réponses: 13
    Dernier message: 09/01/2008, 01h32
  4. Réponses: 2
    Dernier message: 11/01/2007, 11h28
  5. Conversion Caractères Spéciaux String -> Caractères HTML
    Par JujuDorange dans le forum Documents
    Réponses: 1
    Dernier message: 21/10/2006, 12h11

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