Prolog试图制作固定大小的空列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Prolog试图制作固定大小的空列表相关的知识,希望对你有一定的参考价值。
我正试图在这些维度的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 | _ ],
但它似乎没有用。我究竟做错了什么?
答案
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表达式。
以上是关于Prolog试图制作固定大小的空列表的主要内容,如果未能解决你的问题,请参考以下文章