사실, pit (x, y)를 만들기 위해 Prolog에서 규칙을 작성합니다. 아래의 규칙은 내 주요 기능에서 3 번 호출되며, (1,1) 또는 (1,2) 또는 (2,1)에 아무 것도없는 세 개의 피트를 삽입하고 있지만 문제는 때로는 2 피트 x와 y가 같을 때 x와 y는 1에서 4까지만 가능합니다. (4x4 그리드)프롤로그에서 중복 사실을 제거하는 방법
placePit(_) :- Px is random(4)+1,
Py is random(4)+1,
write(Px),
write(' '),
writeln(Py),
(Px =\= 1;
Py =\= 1),
(Px =\= 1;
Py =\= 2),
(Px =\= 2;
Py =\= 1)
->
pit(Px,Py);
placePit(4).
나는 이런 일이하고 싶지 않아, 그래서 다른 규칙이 2 피트 동일 최초로 나중에 데이터베이스에서 ONE이든을 제거하려면 확장 여부를 확인하기 위해 물품. 필자가 테스트 한 것에서 볼 때 2 피트가 똑같은 것처럼 보이더라도 전혀 해고되지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 중복 사실을 제거하는 방법?
pit(A,B) :- pit(C,D),
A = C,
B = D,
write('Duplicate').
추신. 나는 프롤로그에서 매우 새로운 사람이다. 모든 제안을 부탁드립니다.
감사합니다. 그것은 아주 잘 작동하지만 피트 (1,1), 피트 (1,2) 및 피트 (2,1)를 제거하는 방법. 나는이 세 가지를 원치 않는다. – user2843720
내 편집을 참조하십시오. 어쩌면 목록 기반 솔루션이 더 좋을지 모르지만 질문에 목록 사용법이 표시되지 않는다면 DB 처리에 집중해야합니다. – CapelliC