我试图在这些维度的prolog中列出一个列表:
[
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]],
[[_,_,_,_,_,_,_,_,_],[_,_,_,_,_,_,_,_,_]]
]
所以包含9个列表的列表包含2个9个元素的列表。
我尝试了以下内容:
createEmptyView(ReturnList, Size) :-
length(ReturnList, Size),
( for(Y, 1, Size), param(ReturnList, Size) do
Row is ReturnList[Y],
length(Row, 2),
Xlist = Row[0],
Ylist = Row[1],
length(Xlist, Size),
length(Ylist, Size)
).
其中Size = 9且ReturnList是输出。
检索Xlist和Ylist是出错的地方。 我还尝试了以下内容来提取它们:
[Xlist, Ylist] is Row,
Row = [Xlist, Ylist | _ ],
但它似乎不起作用。我做错了什么?
答案 0 :(得分:1)
mylength(X,Y):-
length(Y,X).
list_sizes(Size,List):-
maplist(mylength(Size),List).
然后查询:
?- length(List,9), list_sizes(2,List), maplist(list_sizes(9),List).
你可以缩短没有帮助器mylength / 2并使用库yall的lambda表达式。