finden Sie alle k-Länge Teilmengen der Liste in Prolog

Ich muss eine k-Länge Teilmenge der Liste in Prolog finden, ich habe diese Funktion:

    subset([], []).
    subset([E|Tail], [E|NTail]):-
    subset(Tail, NTail).
    subset([_|Tail], NTail):-
    subset(Tail, NTail).

und ich wende eine andere Regel für die Länge der Liste an,

    length(Xs,Size)

Das Problem ist, dass es sehr langsam ist, weil es nach einer Teilmenge aller Längen sucht. Gibt es eine direkte rekursive Definition für diese Teilmenge der Länge k?

Ich habe eine Woche lang danach gesucht und kann nichts finden

Antworten auf die Frage(1)

Ihre Antwort auf die Frage