簡體   English   中英

從列表中刪除Prolog

[英]removing from the list Prolog

大家好,我是Prolog的新手,我有這樣一個列表:(實際上這是我的謂詞輸出,而不是列表)

P = [1/1, 1/3] ;
P = [1/1, 2/3] ;
P = [1/3, 1/1] ;
P = [1/3, 2/1] ;
P = [2/1, 1/3] ;
P = [2/1, 2/3] ;
P = [2/3, 1/1] ;
P = [2/3, 2/1] ;

並且我需要刪除dublicete術語。例如[1 / 1,2 / 3]和[2 / 3,1 / 1]相同,我應該刪除其中一個,這並不重要,我該怎么做在序言中 提前致謝

注意,我了解到findALL應該是解決問題的好方法,但仍然不知道答案,請幫助我。

除非您實際向我們展示您的代碼 ,否則不可能為您提供准確的答案。

我假設您有一個謂詞f/1這樣:

?- f(P).

產生您在上面顯示的交互式結果。 一個簡單的解決方案是更改您的查詢:

?- f([X,Y]), X < Y.

這將產生以下結果:

X = 1/3, Y = 1/1 ;
X = 1/3, Y = 2/1 ;
X = 2/3, Y = 1/1 ;
X = 2/3, Y = 2/1 ;

findall/3不足以解決此特定情況,因為您已經以忽略列表中位置的方式定義了唯一性。 在Prolog(以及其他所有內容)中,[X,Y]和[Y,X]不相等,因此您必須找到一種技巧來獲得“獨特”結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM