【发布时间】:2010-10-30 22:50:51
【问题描述】:
我有一个列表,其中包含较小的列表,每个列表包含 2 个项目:
[[a,1],[b,2],[c,3]]
我正在使用一个名为 take(1,L,R) 的函数从列表 L 中获取第一项并返回项目 R。获取函数的代码在这里:
take(0,X,X).
take(N,[H|T],[H|R]):-
N>0, M is N-1,
take(M,T,R).
目前运行可能如下所示:
1 ?- take(1,[[a],[b],[c]],Taken).
Taken = [[a], [b], [c]]
与输入相同!这对于“常规”1 级深度列表也是如此:
2 ?- take(1,[a,b,c],Taken).
Taken = [a, b, c]
问题:
你的问题是我怎样才能使结果看起来像:
1 ?- take(1,[[a],[b],[c]],Taken).
Taken = [a]
我想返回我发送的列表的前 N 项。
【问题讨论】:
-
这看起来有点像家庭作业......
-
第一个元素的索引最好使用0。
标签: prolog