Добрый день, при написании кода для простейшей экспертной системы столкнулся с такой проблемой что несколько раз дублируется первый вопрос.
Вот код:
:- dynamic yes/1.
:- dynamic no/1.
game("ACTION STRATEGY"):- positive("Igra avtonomna"),negative("Igra 1m glavnym geroem"),
negative("Statichnaya grafika"),negative("Stroit' virtual'nye goroda").
game("RPG"):- positive("Igra avtonomna"),positive("Igra 1m glavnym geroem"),
negative("Statichnaya grafika"),negative("Stroit' virtual'nye goroda").
game("QUEST"):- positive("Igra avtonomna"),positive("Igra 1m glavnym geroem"),
positive("Statichnaya grafika"),negative("Stroit' virtual'nye goroda").
game("RTS"):- positive("Igra avtonomna"),positive("Igra 1m glavnym geroem"),
negative("Statichnaya grafika"),positive("Stroit' virtual'nye goroda").
game("MOBA"):- negative("Igra avtonomna"),negative("Igra 1m glavnym geroem"),
negative("Statichnaya grafika"),negative("Stroit' virtual'nye goroda"),
positive("Komandnya igra").
game("FPS"):- negative("Igra avtonomna"),negative("Igra 1m glavnym geroem"),
negative("Statichnaya grafika"),negative("Stroit' virtual'nye goroda"),
negative("Komandnya igra"),positive("Nuzhno strelyat' iz oruzhiya").
game("MMORPG"):- negative("Igra avtonomna"),negative("Igra 1m glavnym geroem"),
negative("Statichnaya grafika"),negative("Stroit' virtual'nye goroda"),
negative("Komandnya igra"),negative("Nuzhno strelyat' iz oruzhiya"),
positive("Nuzhno vypolnyat' zadaniya").
game("К сожалению такой жанр игры мне не знаком =(").
positive(X) :- yes(X),!; ask(X,R),R=="Y".
negative(X) :- no(X),!; ask(X,R), R=="N".
ask(X,R):- string_concat(X," ? ",T), write(T), read_line_to_string(user_input,R), remember(X,R).
remember(X,"Y"):- asserta(yes(X)).
remember(X,"N"):- asserta(no(X)).
А вот собственно сама проблема: