Prolog试图使固定大小的空列表
我试图在prolog中列出以下维度:Prolog试图使固定大小的空列表,prolog,swi-prolog,Prolog,Swi 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的情况下将其缩短,并使用lambda表达式,例如使用库yall 所以你想要一个9x2x9非标准矩阵?