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
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
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 ?
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
.
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é
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 :
Exemple d'utilisation :
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).
On peut améliorer la méthode ;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ?- netEntr("acde",[a,d], Out). Out = " c e".
Avec comme résultat :
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ?- netEntr("acde",[a-x,d-y], Out). Out = "xcye".
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
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').
Ok, comm d'hab, j'ai lu en diagonale la question.
On peut utiliser un esprit "fonctionnel" avec foldl :
Avec comme résultat :
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 15 ?- netEntr(" write('bonjour')",[' '], Out). Out = "write('bonjour')".
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
merci pour aide
j'ai voulu dessiner un graphe avec grapheviz et prolog est ce qu'il possible
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.
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager