Ich möchte ein Programm schreiben, das jedes Nth Element aus einer Liste ohne die letzte löscht. Mein Programm funktioniert bereits und gibt mir das richtige Ergebnis, aber wenn ich nach einem anderen Ergebnis frage, kommt prolog mit dem Fehler ">/2: Argumente sind nicht ausreichend instanziiert". Hier ist der Code, den ich bisher habe:Löschen Sie alle N Elemente aus der Liste
delete_elements([],0,[]).
delete_elements([],_,[_|_]).
delete_elements(L,N,R) :-
length(L,LL),
LL > N,
nth1(N,L,_,RZ),
NZ is N + 1,
delete_elements(RZ,NZ,RR),
R = RR.
delete_elements(L,N,R) :-
length(L,LL),
LL =< N,
delete_elements([],_,R),
L = R.
Ich denke, dass es etwas falsch mit der Abbruchbedingung der Rekursion ist. Wie behebe ich das?
Vielen Dank im Voraus!
Vielen Dank! Sie wissen, warum das Programm nur für N = 2 funktioniert? Wie man das Programm für jedes N (1,3 und so weiter) arbeiten lässt? – zer0kai
Geben Sie ein Beispiel für die Eingabe gewünschte Ausgabe ... – coder
Zum Beispiel wenn ich nach delete_elements ([1,2,3,4,5,6,7,8,9], 3, R) fragen, sollte der Ausgang R sein = [1,2,4,5,7,8,9], weil das letzte Element (9) in der Liste sein sollte. – zer0kai