Prolog试图制作固定大小的空列表

问题描述 投票:0回答:1

我正试图在这些维度的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 | _ ],

但它似乎没有用。我究竟做错了什么?

prolog swi-prolog
1个回答
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表达式。

© www.soinside.com 2019 - 2024. All rights reserved.