工作謂詞在這裏,我們走了,多多包涵。總體目標是返回兩個列表之間的最大對齊。如果有多個具有相同長度的對齊,則可以返回第一個。Prolog的問題與combinding是對自己
隨着對準我的意思是元素兩個列表共享,以正確的順序,但不一定秩序。 1,2,3和1,2,9,3;這裏1,2,3將是最長的隊列。任何人,知道我已經定義的謂詞。
align(Xs, Ys, [El | T]) :-append(_, [El | T1], Xs),append(_, [El | T2], Ys),align(T1, T2, T).
align(_Xs, _Ys, []).
然後,我使用內置的謂詞findall得到這些列表之間的所有對齊列表?在這種情況下,它首先將最大的對齊,但我不知道爲什麼。
findall(X,align([1,2,3],[1,2,9,3],X),L).
這將返回以下;
L = [[1, 2, 3], [1, 2], [1, 3], [1], [2, 3], [2], [3], []].
這是正確的,但現在我需要一個謂詞,它將這兩個相結合,並返回列表中最大的列表。
如果你的意思在名單列表中的最大列表。比是的。 – Algific 2009-11-03 17:42:07
如果你只是想找到最大的項目,排序是一種矯枉過正。 – Kaarel 2009-11-03 23:44:56
確實如此,但由於您可以使用庫謂詞,因此具有實現起來更簡單的優點。 – nedned 2009-11-04 03:15:16