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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| /******************************************************************************/
/* */
/* Mix markeking */
/* */
/* S.P.I.R. */
/* */
/* Solution */
/* */
/* Version 1.0.0 */
/* */
/******************************************************************************/
/* Date : 2018-03-27 04:00:00 */
/* Author : arknos */
/* Version : 1.0.0 */
/* Description : S.P.I.R. solution */
/******************************************************************************/
:- dynamic ( mix/7 ).
:- dynamic ( result/3).
prompt(Prompt) :- prompt1(Prompt).
message(Message) :- write(Message), nl.
dialog(Message,
Prompt,
Response) :- message(Message),
prompt(Prompt),
read(Response).
contact(Name) :- dialog("", "LOGON : ", Name).
who(Dealer) :- dialog("Who ?", "dealer : ", Dealer).
what(What) :- dialog("What ?", "what : ", What).
where(Where) :- dialog("Where ?", "where : ", Where).
when(When) :- dialog("When ?", "when : ", When).
howto(Howto) :- dialog("How to ?", "how to : ", Howto).
quantity(Quantity) :- dialog("How many ?", "how many : ", Quantity).
price(Price) :- dialog("How much ?", "price : ", Price).
situation(Mix) :-
who(Dealer),
what(What),
where(Where),
when(When),
howto(Howto),
quantity(Quantity),
price(Price),
assertz((mix(Dealer, What, Where, When, Howto, Quantity, Price))),
Mix = [Dealer, What, Where, When, Howto, Quantity, Price].
split([Dealer, What, Where, When, Howto, Quantity, Price],
Dealer, What, Where, When, Howto, Quantity, Price).
problem(dealer, Mix, Values) :-
split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
findall(Value,
mix(Value, What, Where, When, Howto, Quantity, Price), Values).
problem(what, Mix, Values) :-
split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
findall(Value,
mix(Dealer, Value, Where, When, Howto, Quantity, Price), Values).
problem(where, Mix, Values) :-
split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
findall(Value,
mix(Dealer, What, Value, When, Howto, Quantity, Price), Values).
problem(when, Mix, Values) :-
split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
findall(Value,
mix(Dealer, What, Where, Value, Howto, Quantity, Price), Values).
problem(howto, Mix, Values) :-
split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
findall(Value,
mix(Dealer, What, Where, When, Value, Quantity, Price), Values).
problem(quantity, Mix, Values) :-
split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
findall(Value,
mix(Dealer, What, Where, When, Howto, Value, Price), Values).
problem(price, Mix, Values) :-
split(Mix, Dealer, What, Where, When, Howto, Quantity, Price),
findall(Value,
mix(Dealer, What, Where, When, Howto, Quantity, Value), Values).
problem(Problem) :- dialog("What is the problem ? ", "problem : ", Problem).
implication(Mix, Problem, Values) :- message("Result searching..."),
problem(Problem, Mix, Values).
problem(Name, Mix, Problem) :- assertz((result(Name, Mix, Problem))).
deal :- situation(Mix),
problem(Problem),
implication(Mix, Problem, Values),
write("New values : "), write(Values), nl,
contact(Name),
problem(Name, Mix, Problem). |