List 序言:仅使用append关系从列表中获取第五个元素

List 序言:仅使用append关系从列表中获取第五个元素,list,prolog,append,List,Prolog,Append,我的问题是: 仅使用append关系(即append(L1、L2、L3)),制定查询以确定 下面(注意,尽管您的答案应该使用L3=[1,2,3,4,5,6,7,8]但它应该适用于任何列表 由五个或五个以上元素组成,如L3) 到目前为止,我尝试过的查询有: append(Left, [X|Y], [1,2,3,4,5,6,7,8]). append([W|X], [Y|Z], [1,2,3,4,5,6,7,8]). 我不认为仅仅使用append关系就可以得到任何给定列表的第五个元素。非常感谢您

我的问题是:

仅使用append关系(即append(L1、L2、L3)),制定查询以确定 下面(注意,尽管您的答案应该使用
L3=[1,2,3,4,5,6,7,8]
但它应该适用于任何列表 由五个或五个以上元素组成,如
L3

到目前为止,我尝试过的查询有:

append(Left, [X|Y], [1,2,3,4,5,6,7,8]).

append([W|X], [Y|Z], [1,2,3,4,5,6,7,8]).

我不认为仅仅使用append关系就可以得到任何给定列表的第五个元素。非常感谢您的帮助。

您可以使用
append/3
获取第5个元素,但这并不像直接获取元素那么简单<代码>追加/3是一种过火的行为。所以我怀疑这只是一个使用
append/3
的练习。这里有一个提示:至少由3个元素组成的列表可以写成
[X,Y,Z | T]
。在Prolog提示符下尝试,例如,
[1,2,3,4,5,6,7]=[X,Y,Z | T]
,看看您得到了什么。谢谢!我用类似的方法自己解决了这个问题。我的回答是:附加([|[|[|[|[|[|[|][Fifthement][1,2,3,4,5,6,7,8]),你不需要这些<代码>[A |[B |[C | T]]与
[A,B,C | T]
相同。只需
append([[u,[u,[u,[u,[u,[u,]fifthement],[1,2,3,4,5,6,7,8])
append([u,[u,[u,[u,[u,[u,[u,[u,[u,[u,[u,[u,]fifthement],[1,2,3,4,5,6,7,8])
。但这太过分了。您只需执行
fifth\u元素([\uu,\uu,\uu,fifthelent |,fifthelent)
并使用
fifth\u元素([1,2,3,4,5,6,7,8],X)查询即可。