我需要從列表中的一個元素索引刪除另一個索引元素。所以它應該看起來像:從列表中的一個索引元素刪除到另一個索引元素
?-delm(2,4,[5,6,-3,6,11,56,81],L),write(L),nl.
L = [5,11,56,81]
所以我做了這個。
delm(A,B,C,D):-A>B,delm(B,A,C,D).
del1(1,[_|T],T):-!.
del1(N,[X|T],[X|L]):-N1 is N - 1,del1(N1,T,L).
delm(N,2,L,R):-del1(N,L,R),!.
delm(N,M,L,R):-M1 is M - 1,del1(N,L,Buf),delm(N,M1,Buf,R).
length([],0).
length([_|T],N):- length(T,N1),N is N1+1.
?-delm(2,4,[5,6,-3,6,11,56,81],L),write(L),nl.
但我還需要補充的是,如果其中一個數字小於1或大於列表長度,寫入消息(「錯誤」)。所以它應該看起來像
?-delm(-2,4,[5,6,-3,6,11,56,81],L),write(L),nl.
"Error"
?-delm(2,-4,[5,6,-3,6,11,56,81],L),write(L),nl.
"Error"
?-delm(2,40,[5,6,-3,6,11,56,81],L),write(L),nl.
"Error"
我不知道該怎麼做。請幫忙!
假設你也想產生「錯誤」,如果「A> B」 - 或者沒問題?編輯:NM,我看你在第一條規則中處理了。 – Orbling
您是否希望它爲L返回'錯誤',還是單獨輸出? – Orbling
@Orbling我認爲L,但是有什麼區別嗎? – Tanya