Prolog - die erste Liste aus einer Liste von Listen

Ich habe eine Liste, bestehend aus kleineren Listen in der es, jede Liste, bestehend aus 2 Elemente:

[[a,1],[b,2],[c,3]]  

Habe ich mit Hilfe einer Funktion namens nehmen(1,L,R), um das erste Element aus der Liste L und die Rücksendung R. Der code für die take-Funktion ist hier:

take(0,X,X).
take(N,[H|T],[H|R]):- 
    N>0, M is N-1,
    take(M,T,R).  

Im moment einen Lauf könnte wie folgt Aussehen:

1 ?- take(1,[[a],[b],[c]],Taken).
Taken = [[a], [b], [c]]

Das ist das gleiche wie die Eingabe! Dies ist das gleiche für eine "normale" 1-level-Tiefe Liste:

2 ?- take(1,[a,b,c],Taken).
Taken = [a, b, c]

Frage:

Die Frage ist, wie kann ich machen das Ergebnis so Aussehen:

1 ?- take(1,[[a],[b],[c]],Taken).
Taken = [a]

Will ich zurück, die ersten N Elemente von der Liste, die ich senden.

  • Das sieht verdächtig nach Hausaufgabe...
  • Es ist besser, verwenden Sie 0 als index für das erste element.
InformationsquelleAutor shaungus | 2010-10-30
Schreibe einen Kommentar