Улучшить экспертную систему - Prolog
Формулировка задачи:
Необходимо улучшить экспертную систему, необходимо добавить счетчик результатов, и начинаться опрос должен именно с самого популярного результата. Т.е. если по результатам опроса чаще всего выпадает Ruby, то каждый новый опрос должен начинаться с него.
Нужна помощь. Если эта не очень простая задача, кто может реализовать отпишитесь, мб договоримся.
Решение задачи: «Улучшить экспертную систему»
textual
Листинг программы
domains conditions = integer * history = integer * database rule(integer, symbol,symbol, conditions) cond(integer, symbol) yes(integer) no(integer) predicates do_expert_job do_consulting clear go(history, symbol) check(integer, history, conditions) Inpo(history, integer, integer, symbol) do_answer(history, integer, symbol, integer, char) goal do_expert_job. clauses /* System user interface */ do_expert_job :- makewindow(1, 7, 7, "EXPERT SYSTEM", 0, 0, 25, 80), nl,write(" * * * * * * * * * * * * * * * * * * * "), nl,write(" PROGRAMMING LANGUAGES "),nl, nl,write(" Answer questions only 'y' or 'n' "),nl, nl,write(" * * * * * * * * * * * * * * * * * * * "), nl,nl,do_consulting, nl, readchar(_), removewindow. do_consulting :-go([],"Language"),!. do_consulting :-nl, write("No results!"), clear. do_consulting. inpo(HISTORY,RNO,BNO,TEXT) :- write(TEXT," : "), readchar(RESPONSE), do_answer(HISTORY,RNO,TEXT,BNO,RESPONSE). /* Mechanism output */ go(HISTORY, Mygoal) :- rule(RNO,Mygoal,NY,COND), check(RNO,HISTORY,COND),!, go([RNO|HISTORY],NY). go(_,Mygoal) :- not(rule(_,Mygoal,_,_)),!, nl,write("Your language: ",Mygoal), clear. check(RNO,HISTORY,[BNO|REST]) :-yes(BNO),!,check(RNO,HISTORY,REST). check(_,_,[BNO|_]) :- no(BNO),!,fail. check(RNO,HISTORY,[BNO|REST]) :- cond(BNO,TEXT), inpo(HISTORY,RNO,BNO,TEXT), check(RNO,HISTORY,REST). check(_,_,[]). do_answer(_,_,_,_, 27) :-exit. do_answer(_,_,_,BNO,'y') :-assert(yes(BNO)),write(y),nl. do_answer(_,_,_,BNO,'n') :-assert(no(BNO)),write(n),nl,fail. clear :-retract(yes(_)),retract(no(_)),fail,!. clear. /* Knowledge base */ rule(1, "Language", "Web applications", [1]). rule(2, "Language", "Applications for phone", [2]). rule(3, "Language", "Desktop applications", [3]). rule(4, "Language", "Drivers", [4]). rule(5, "Language", "Expert systems", [5]). rule(6, "Web applications", "JavaScript", [6,7,8]). rule(7, "Web applications", "Ruby", [7,8]). cond(1, "Do you want to develop web applications?"). cond(2, "Do you want to develop applications for phone?"). cond(3, "Do you want to develop desktop applications?"). cond(4, "Do you want to develop drivers?"). cond(5, "Do you want to develop expert systems?"). cond(6, "Do you want to work for yourself?"). cond(7, "You are a creative person?"). cond(8, "Are you willing to constantly learn something new?").
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д