Ich wollte nicht widersprüchlich sein oder jemand anderen meine Arbeit tatsächlich tun; Ich wollte nur einen Rat, sorry dafür, dass ich nicht klarer bin.
Ich habe es jetzt selbst implementiert, aber könntest du vielleicht Verbesserungen oder bessere Möglichkeiten vorschlagen? Was ich oft in Prolog mache, ist ein Prädikat zu schreiben, indem man einen Zähler oder eine Menge von Zählern sagt und ein Prädikat mit weniger Argumenten erhält, um die Klauseln mit zusätzlichen Argumenten aufzurufen. Dies führt oft zu ziemlich viel Code. Wie auch immer, hier ist meine Implementierung, die ich gerade gemacht habe:
item_at(N, L, Item) :-
item_at(N, 0, L, Item).
item_at(N, Count, [H|_], Item) :-
CountNew is Count + 1,
CountNew = N,
Item = H.
item_at(N, Count, [_|T], Item) :-
CountNew is Count + 1,
item_at(N, CountNew, T, Item).
Kommentare? Vielen Dank :). Verbrauch:
?- item_at(3,[a,b,c,d,e],Item).
Item = c ;
klären, was meinst du mit "einfacher"? Weniger Zeilen Code? Sie könnten z.B. "Listen: nth0_det (3, [_, _, _, A | _], A): -!." Ansonsten ist der einzige Weg, es einfacher zu machen, es weniger allgemein zu machen. Ist das was du willst? – Kaarel