pronoun("он").
pronoun("она").
pronoun("оно").
instrument_pretext("c").
instrument_pretext("c помощью").
instrument_pretext("посредством").
instrument_pretext("на").
time_pretext("перед").
time_pretext("после").
time_pretext("за тем").
time_pretext("в").
position_pretext("в").
position_pretext("на").
position_pretext("под").
position_pretext("над").
position_pretext("внутри").
position_pretext("снаружи").
purpose_pretext("с целью").
purpose_pretext("для").
verb("реализовал").
verb("сделал").
verb("написал").
noun("студент").
noun("программа").
noun("программу").
noun("курс").
noun("курса").
noun("семестр").
noun("семестре").
noun("класс").
noun("классе").
noun("си").
noun("пролог").
noun("прологе").
noun("проект").
noun("проекта").
adjective("второй").
adjective("второго").
adjective("третий").
adjective("третьего").
adjective("осенний").
adjective("осеннем").
adjective("терминальный").
adjective("терминальном").
adjective("эффективная").
adjective("эффективную").
adjective("курсовой").
adjective("курсового").
name("Виктор").
question("что","что").
question("кто","кто").
question("чём","на чём").
question("чего","для чего").
question("где","где").
question("когда","когда").
question_verb("сделал","что сделал").
answer(QST,[X|SENT],ANSW):- answer1(QST,SENT,[X],ANSW).
answer1(QST,[X1|SENT],X,ANSW):- relation(QST,X,ANSW), answer1(_,SENT,[X1],ANSW).
answer1(QST,[X|SENT],L,ANSW):- ins(X,L,RES), answer1(QST,SENT,RES,ANSW).
answer1(_,[],X,ANSW):- relation(_,X,ANSW).
ins(X,[X1|L],[X1|RES]):- ins(X,L,RES).
ins(X,[],[X]).
relation(QST,X1,X2):- relation1(QST,X1,X2).
relation(QST,X1,X2):- relation1(_,X1,X3), relation1(QST,X3,X2).
relation1(QST,X1,X2):- relation2(QST,X1,X2).
relation1(QST,X1,X2):- relation2(QST,X2,X1).
relation2("что",["реализовал"],["эффективную","программу"]).
relation2("кто",["реализовал"],["студент","третьего","курса"]).
relation2("кто",["реализовал"],["студент","второго","курса"]).
relation2("что",["студент","третьего","курса"],["эффективную","программу"]).
relation2("что",["студент","второго","курса"],["эффективную","программу"]).
relation2("на чём",["студент","третьего","курса"],["на","прологе"]).
relation2("на чём",["студент","второго","курса"],["на","си"]).
relation2("для чего",["реализовал"],["для","курсового","проекта"]).
relation2("где",["реализовал"],["в","терминальном","классе"]).
relation2("когда",["реализовал"],["в","осеннем","семестре"]).
relation2("что сделал",A,E):-relation2("кто",E,A).
delqst(SENT,RES,QSTSTR):- scan(QSTSTR,QST), delqst1(SENT,RES,QST).
delqst1([X|SENT],RES,[X|QST]):- delqst1(SENT,RES,QST).
delqst1([X|SENT],[X|RES],QST):- delqst1(SENT,RES,QST).
delqst1([X|SENT],[X|RES],[]):- delqst1(SENT,RES,[]).
delqst1([],[],[]).
scan(STR,[FRS|FRSL]):- word(STR,FRS,STR1),!, scan(STR1,FRSL).
scan(_,[]).
word(STR,FRS,STR1):- searchchar(STR,' ',NUM), str_len(STR,LN),
NUM1=NUM-1, NUM2=NUM+1, LN1=LN-NUM,
substring(STR,1,NUM1,FRS), substring(STR,NUM2,LN1,STR1).
word(STR,STR,""):-STR<>"".
lst_to_str(STR,[TOK|TOKL]):-lst_to_str(STR1,TOKL), concat(TOK," ",STR2), concat(STR2,STR1,STR).
lst_to_str(STR,[TOK|[]]):- STR=TOK.
run:-
scan("кто реализовал эффективную программу на си в терминальном классе в осеннем семестре для курсового проекта",FRS),
scan("что реализовал студент третьего курса",FRS),
scan("студент третьего курса что сделал в осеннем семестре",FRS),
scan("студент третьего курса реализовал эффективную программу на чём",FRS),
sentence(FRS,X,QST),
delqst(FRS,RES,QST),
answer(QST,RES,ANSW),nl,
lst_to_str(STR,ANSW),
write(STR).
run:- write("Не знаю.").
GOAL
run.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.