time_name_group([A,B,C|S],S):-adjective(A),
adjective(B),time_noun(C).
position_name_group([A,B|S],S):-adjective(A),position_noun(B).
position_name_group([A|S],S):-position_noun(A).
purpose_name_group([A,B|S],S):-adjective(A),purpose_noun(B).
purpose_name_group([A|S],S):-purpose_noun(A).
action(["в","солнечный","ясный","день","студент","готовил","в",
"читальном","зале","по","учебникам","сложный","экзамен",
"для","успешной","сдачи"]).
verb("готовил").
adjective("солнечный").
adjective("ясный").
adjective("читальном").
adjective("сложный").
adjective("успешной").
instrumental_prep("по").
time_prep("в").
purpose_prep("для").
position_prep("в").
noun("студент").
noun("экзамен").
ins_noun("учебникам").
time_noun("день").
position_noun("зале").
purpose_noun("сдачи").
pronoun("он").
pronoun("она").
pronoun("оно").
qagent("кто").
qeffect("что делал").
qpurpose("для чего").
qposition("где").
qtime("когда").
qobject("что").
qinstrument("как").
otvet(Q,S):-answer(Q,S,A),wr_sp(A),nl.
answer(Q,S,A):-qagent(Q),agent(A,[]),
effect(S,S2),append(S3,S2,S),
append(A,S3,R),action(F),
sublist(R,F).
answer(Q,S,E):-qeffect(Q),effect(E,[]),
agent(S,R),append(A,R,S),
append(A,E,K),
action(F),sublist(K,F).
answer(Q,S,I):-qinstrument(Q),instrument(I,[]),
agent(S,S1),effect(S1,S2),
action(F),abc(F,X,S2),
sublist(I,X),abc(X,Y,I),
append(I,S2,K),
sublist(K,F),append(Y,I,X),
sublist(X,F),!.
answer(Q,S,P):-qposition(Q),position(P,[]),
agent(S,S1),effect(S1,S2),
append(S3,S2,S1),action(F),
abc(F,X,S2),abc(X,Y,S3),
append(Y,G,X),sublist(P,G),
append(S3,P,K),sublist(K,F),!.
answer(Q,S,T):-qtime(Q),time_action(T,[]),
agent(S,S1),append(S2,S1,S),
action(F),abc(F,T,S2).
answer(Q,S,P):-qpurpose(Q),purpose(P,[]),
agent(S,S1),effect(S1,S2),
action(F),abc(F,X,S2),
append(X,Y,F),sublist(P,Y),
append(S2,P,K),sublist(K,F).
answer(Q,S,O):-qobject(Q),object(O,[]),
agent(S,S1),effect(S1,S2),
action(F),abc(F,X,S2),
append(X,Y,F),sublist(O,Y),
append(S2,O,K),sublist(K,F).
GOAL
nl,nl,nl,
write("вопрос:"),nl,
Q=("кто"),
S=["готовил","экзамен"], write (Q," "),
wr_sp (S),write("?"),nl,
write("ответ:"), nl, otvet(Q,S), nl, readchar(_),
write("Вопрос:"),nl,
R=("что делал"),
SR=["студент","в","читальном","зале"], write (R," "),
wr_sp (SR),write("?"),nl,
write("Ответ:"), nl, otvet(R,SR), nl, readchar(_),
write("Вопрос:"),nl,
U=("когда"),
SU=["студент","готовил","сложный","экзамен"],
write (U," "), wr_sp (SU),write("?"), nl, write("Ответ:"), nl,
otvet(U,SU), nl, readchar(_),
write("Вопрос:"),nl,
U2=("где"),
SU2=["студент","готовил","экзамен"],
write (U2," "), wr_sp (SU2),write("?"), nl, write("Ответ:"), nl,
otvet(U2,SU2), nl, readchar(_),
write("Вопрос:"),nl,
W="для чего",
SW=["студент","готовил","экзамен"], write (W," "),
wr_sp (SW),write("?"), nl, write("Ответ:"), nl, otvet(W,SW), nl, readchar(_),
Q2=("что"),
S2=["студент","готовил","по", "учебникам"],
write (Q2," "), wr_sp (S2),write("?"),nl,
write("Ответ:"), nl, otvet(Q2,S2), nl, readchar(_),
Q3=("как"),
S3=["студент","готовил","сложный","экзамен"],
write (Q3," "), wr_sp (S3),write("?"),nl,
write("Ответ:"), nl, otvet(Q3,S3), nl.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.