当我尝试创建一个包含多个子列表的列表时,我遇到了一些麻烦。我不明白为什么我的代码不能按预期工作。列表内的序言列表
solves(_, _, 0, _).
solves(Length, List, Stopcond, NList):- length(NL, Length),
append([NL], List, NList),
write(NList), nl,
N is Stopcond-1,
solves(Length, NList, N, NList2).
?- solves(3, [], 3, B).
我想B是一个带有三个子列表的列表,每个子列表都有三个实习变量。 当我写NLIST,它表明:
1. [[_G3207,_G3210,_G3213]]
2. [[_G3222,_G3225,_G3228],[_G3207,_G3210,_G3213]]
3. [[_G3237,_G3240,_G3243],[_G3222,_G3225,_G3228],[_G3207,_G3210,_G3213]]
4. B = [[_G3207, _G3210, _G3213]] .
但我不明白为什么B成为唯一列表的最后一个元素。我希望它成为第3行的列表。任何人都可以看到为什么和我做错了什么?我对prolog很陌生。
给我一分钟,我正在调整解释以适合您的代码。 – 2bigpigs
谢谢!这正是我正在尝试的,我会开始评论我自己的代码! –