1
我在Prolog中編寫了一個規則來創建一個事實,pit(x,y)。下面的這個規則被稱爲三次從我的主要功能,它插入三個坑,其中沒有他們在(1,1)或(1,2)或(2,1),但問題是,有時2坑具有相同的x和y,其中x和y只能從1到4。 (4x4網格)如何在Prolog中刪除重複的事實
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個坑是否相同第一,將擴展以後從數據庫中刪除任何一個。從我測試過的情況來看,儘管兩個坑看起來都是一樣的,但並沒有被解僱。我究竟做錯了什麼?如何刪除重複的事實?
pit(A,B) :- pit(C,D),
A = C,
B = D,
write('Duplicate').
PS。我在Prolog非常新。任何建議表示讚賞。
謝謝。它工作得很好,但如何去除坑(1,1),坑(1,2)和坑(2,1)。我不想要這三個(也許我不夠清楚)。 – user2843720
看我的編輯。也許基於列表的解決方案會更好,但是您的問題不會顯示任何列表使用情況...然後我堅持數據庫處理。 – CapelliC