我在我的序言程序中构建列表列表时遇到问题。我有一个谓词,它可以让我返回一行的单个案例。我必须对这一行的所有案例进行分组并将它们转换为列表列表。我可以很好地访问它们,但是当我退出时,我得到的只是第一个元素。
这是代码:
sudoku3to2 :- s3to2(1).
s3to2(Line) :-
Line < 9,
Line1 is Line+1,
s3getLine(Line,0,[L]),
assert(sudoku2(Y,L])),
s3to2(Line1).
s3to2(9).
s3getLine(Line,X, , ) :-
X < 9,
X1 is X + 1,
sudoku3(Line,X, ),
s3getLine(Line,X1, , ).
s3getLine(Line,9,L,L).
sudoku3/3 将返回 X,Y 坐标处的元素。当我到达 s3getLine(Line,9,L,L) 时,我将开始返回。我想保留我收集的所有元素,而不仅仅是第一个。而且我真的很难构建正确的谓词调用。