It takes time to me to jump form "C" and "Turbo Prolog 1,2" to "Visual Prolog", but now I begin to like it.
Here is part of my code, my problem and my question.
Code: Select all
class facts
remedes : string* := []. /* remedies list, empty */
clauses
setRemedies(RemedesToAdd) :-
write("\n\nLa liste des remèdes brute à ajouter ", RemedesToAdd, "\ndevient après traitement :\n"),
computeRemedies(remedes, RemedesToAdd),
write("Les remèdes : ", remedes),
sortList(remedes).
class predicates
computeRemedies : (string*, string*).
clauses
computeRemedies(remedes, RemedesToAdd) :-
X = list::getMember_nd(RemedesToAdd),
if list::isMember(X, remedes) then
Index = tryGetIndex(X, remedes),
Valided = nth(Index + 1, remedes),
Int = toTerm(integer, Valided) + 1,
ReturnTerm = toString(Int),
remedes := setNth(Index + 1, remedes, ReturnTerm)
else
remedes := list::append(remedes, [X, "1"])
end if,
fail.
computeRemedies(_, _).of the valided symptom :
Perfect, it is exactly what I expected... but, I don't succeed to get a sorted list based on the number ofLa liste des remèdes brute à ajouter :
["Arnica","Tabacum","Placebo"]
devient après traitement :
["Arnica","1","Tabacum","1","Placebo","1"]
La liste des remèdes brute à ajouter :
["Arnica","Placebo"]
devient après traitement :
["Arnica","2","Tabacum","1","Placebo","2"]
time of each validation. How may I declare predicates and clauses
to obtain such a result :
["Arnica","2","Placebo","2","Tabacum","1"] and so on.
Such a result gives me the possibilty to choose one or some more best remedies for my patient.
Very warm regards for such help and, by the way, in the forum, does somebody speak french or use VP in France ?
Michel
