Kann mir jemand sagen, wie der Zugriff auf ein bestimmtes Element einer Liste in prolog? Zum Beispiel sagen, ich brauche, um den Zugriff auf die 3. oder 4. element einer Liste übergeben in der Regel ein?
InformationsquelleAutor der Frage David Carpenter | 2012-10-17
nth0(Ind, Lst, Elem)
odernth1(Ind, Lst, Elem)
mit SWI-Prolog,nth0
das erste element hat den index 0.Beispielsweise
InformationsquelleAutor der Antwort joel76
Wenn die Indizes, die Sie zugreifen müssen, sind so klein, könnten Sie mit pattern-matching. Sagen, wir brauchen das Dritte element oder das vierte:
Könnte dies mehr nützlich, wenn verwendet, 'inline', wenn die Liste trägt die info mit positions-Relevanz. Zum Beispiel
InformationsquelleAutor der Antwort CapelliC
Einer prolog-Liste ist eine klassische Liste. Der Zugang ist nicht direkt. Sie haben zu Durchlaufen, um zu finden, was Sie brauchen.
Können Sie das N-te element auf diese Weise:
wo [code]X[/code]n ist die N-TEN element der Liste. Unpraktisch für n größer als ein kleiner Wert. Dies ist in etwa Analog zu einem C/C++ - Zeiger-Ausdruck:
Sonst hast du zum Durchlaufen der Liste zu finden, die das gewünschte element, mit einem built-in-Prädikat oder ein home-brew-Prädikat, so etwas wie:
foo(Xs) :- nth_element(Xs,9,X) , ...
nth_element(Xs,N,X) :- nth_element(Xs,0,N,X) .
nth_element([X|Xs],N,N,X) :- !.
nth_element([_|Xs],T,N,X) :- T1 T+1 , nth_element(Xs,T1,N,X).
InformationsquelleAutor der Antwort Nicholas Carey
Mithilfe der
func
Bibliothek für SWI-Prolog, ist es möglich, zu schreiben, Liste Verstehens in präziser Art und Weise:Nun können Sie auf zwei Elemente der Liste, und fügen Sie Sie zusammen, wie diese:
InformationsquelleAutor der Antwort Anderson Green