在Prolog中返回给定列表的第三个到最后一个元素

在Prolog中返回给定列表的第三个到最后一个元素,prolog,Prolog,我对使用Prolog是新手,我想写一个程序来计算给定列表的第三到最后一个元素。 比如说 ThirdLast ([1, 2, 3, 4, 5] , Ans). 将给我: Ans = [3, 4, 5] 我这样做了,但不起作用 len([],0). len([_|T],N) :- len(T,X), N is X+1. ThirdLast([ ],0) ThirdLast([H|L1], X):-(len(L1,N)==2), X is H. ThirdLast ([H|L1],X)

我对使用Prolog是新手,我想写一个程序来计算给定列表的第三到最后一个元素。 比如说

ThirdLast ([1, 2, 3, 4, 5] , Ans).
将给我:

Ans = [3, 4, 5]
我这样做了,但不起作用

len([],0). 
len([_|T],N)  :-  len(T,X),  N  is  X+1.
ThirdLast([ ],0)
ThirdLast([H|L1], X):-(len(L1,N)==2), X is H.
ThirdLast ([H|L1],X):-(len(L1,N)>2),ThirdLast (L1,X).

有什么想法吗?

您可以使用忽略前两个元素的简单规则:

tail3([_,_|T], T).
前两个元素与
统一,并被丢弃。列表的其余部分与
T
相结合,这是我们想要产生的结果


我们应该考虑列表的任何长度,所以如果我有[1,2,3,4,5,6,7,8,9],结果将是[3,4,5,6,7,8,9] @虚构,这就简单多了!请看编辑。术语把我难住了。在这种情况下,倒数第三个元素是
3
。你的意思是,从第三个元素到最后一个元素,或者除了前两个元素以外的所有元素。很多语法错误(几乎有十几个),这些错误肯定不是唯一的!我会后退一步,扔掉垃圾,回到原点,重新开始。