0
Я хочу удалить первый факт, который выполняет мое условие в Prolog.Удалить первый факт, который выполняет условие в Prolog
Я попытался удалить один и только один из пяти фактов, что его число не соответствует моей цели.
Моя цель здесь, чтобы держать карты с номером 4.
Операция сокращения не работает с отрицанием.
В ясном предложении я хочу удалить этот факт (имеет (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):-
\t nl,
\t write('**LIST OF ALL CARDS YOU HAVE**'),
\t nl,
\t forall(has(Player,X,Y),(writeln(X+Y))).
мне трудно понять, что вы делаете, что вы хотите сделать, и почему это проблема. –
Я хочу, чтобы найти способ получить первый факт, используя разрезы с условием (отрицание), тогда, если я получу этот факт, я его удалю. –
В ясном предложении я хочу удалить этот факт (имеет (reem, blue, 1)). используя сокращения и отрицание –