如果事实不符合';prolog中不存在吗?
我不熟悉序言。 我的项目的想法是说“如果没有人是X的客人,那么X房间是免费的,而如果一个家庭住在X房间,那么X房间是被占用的”。 我使用谓词如果事实不符合';prolog中不存在吗?,prolog,Prolog,我不熟悉序言。 我的项目的想法是说“如果没有人是X的客人,那么X房间是免费的,而如果一个家庭住在X房间,那么X房间是被占用的”。 我使用谓词 guest(FamilySurname,RoomTaken) 这意味着一个家庭占据了这个房间 taken(X) :- guest(_,X). guest(albert, 123). ?- taken(123, R). R = albert. 所以如果一个家庭住在X房间,那么X就被拿走了 我的问题是我怎么能说X房间是免费的?我应该用一种不,比如:
guest(FamilySurname,RoomTaken)
这意味着一个家庭占据了这个房间
taken(X) :- guest(_,X).
guest(albert, 123).
?- taken(123, R).
R = albert.
所以如果一个家庭住在X房间,那么X就被拿走了
我的问题是我怎么能说X房间是免费的?我应该用一种不,比如:
free(X) :- "NOT EXIST" guest(_,X).
我如何在prolog中翻译“不存在”?
我试过了!但它不能正常工作。。。也许我把它放错地方了
对不起,我的英语不好。请检查以下代码:
taken(X, Y) :- guest(Y,X).
free(X) :- \+ guest(_,X).
我做了一个小小的改变,现在它告诉你谁在那个房间里
taken(X) :- guest(_,X).
guest(albert, 123).
?- taken(123, R).
R = albert.
free()谓词非常简单,我使用了否定运算符,您可以检查第一个答案中的代码似乎不是解决方案,即查询
?-free(X)
不会给出答案,因为查询?-free(foo)
会成功。一个需要考虑的因素,即所有变量
考虑以下代码,其中有两个选项用于表示free
谓词
room(123).
room(124).
guest(albert, 123).
taken(Room) :- guest(_, Room).
free2(Room) :- room(Room),
\+ taken(Room).
free(Room) :- room(Room),
forall(guest(_, RoomTaken),
RoomTaken \= Room).