2017-05-02 1 views
1

Um mit einzelnen Elementlisten zu vereinheitlichen, machen Sie [_]. Wie vereinheitlichen Sie Listen mit mehr als einem Element? Seit [_|_] wird noch mit [1] vereinheitlichen.Wie kann man nur mit einem nicht leeren Schwanz in einer Liste vereinheitlichen?

Zum Beispiel möchte ich wissen, ob es möglich ist, mit [1,2] zu vereinheitlichen, aber nicht mit [1].

Ich brauche das, weil ich delete(Lst1,[_|_] (if this worked), Lst2) verwenden möchte, um alle Mehrfachelementlisten von Lst1 zu entfernen.

Um dies zu erreichen, muss ich zunächst alle Listen mit einzelnen Elementen aus Lst1 entfernen, um eine Liste mit allen Listen mit mehreren Elementen zu erhalten, und dann die Liste aus Lst1 entfernen, um eine Liste mit allen Listen mit einzelnen Elementen zu erhalten .

Antwort

4

Der Begriff [_,_|_] mit Listen vereint, die mindestens zwei Elemente:

?- [1]=[_,_|_]. 
no 
    ?- [1,2]=[_,_|_]. 
yes 
    ?- [1,2,3]=[_,_|_]. 
yes 

In Bezug auf Ihren Plan zu verwenden, um es mit subtrahieren/3, beachten Sie die folgenden Abfragen:

?- subtract([[1],[2,3],[4],[2,3]],[[_,_|_]], Lst2). 
Lst2 = [[1], [4]]. 

Dies scheint darauf hinzu sein, was Sie tun möchten, aber wenn [_,_|_] ist vereinheitlicht mit [2,3]:

?- subtract([[1],[2,3],[4],[5,6]],[[_,_|_]], Lst2). 
Lst2 = [[1], [4], [5, 6]]. 

Versuchen Sie, etwas wie this zu tun?

+0

Funktioniert mit löschen, löschen ([[1], [2,3], [4], [5,6]], [_, _ | _], Lst2). Vielen Dank! – Myntekt

Verwandte Themen