Hello from France.
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.
.../..
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(_, _).
.../...
It works fine... As you can see, I don't add any double but I increment the number
of the valided symptom :
La 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"]
Perfect, it is exactly what I expected... but, I don't succeed to get a sorted list based on the number of
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
