我想删除在 Prolog 中满足我条件的第一个事实。
我试图删除其数量不等于我的目标的五个事实中的一个且仅一个。
我的目标是保留数字 4 的卡片。
cut 操作不适用于否定。
在一个明确的句子中,我想删除这个事实 (has(reem,blue,1)),这是第一个满足我条件的事实。
我怎么解决这个问题?
:- dynamic
has/3, first/2.
has(reem,yellow,4).
has(reem,blue,1).
has(reem,red,5).
has(reem,green,4).
has(reem,blue,2).
deleteCard(Player,Goal):-
retract(has(Player,_,Y)),not(Y=Goal),!.
start:-
deleteCard(reem,4),
displayAll(reem).
displayAll(Player):-
nl,
write('**LIST OF ALL CARDS YOU HAVE**'),
nl,
forall(has(Player,X,Y),(writeln(X+Y))).