我正在尝试编写一个明确的子句语法来输出数字的分区。例如?- w(3,L,[])
应该输出:
[1,1,1]
[2,1]
[1,2]
[3]
我的代码如下所示:
w(PosNumber) --> {partition(PosNumber,L)},L.
partition(0,[]).
partition(PosNumber,[X|List]):-
between(1,PosNumber,X),
Y is (PosNumber-X),
partition(Y,List).
我的分区函数似乎工作正常,但我不确定如何正确实例化“w”。抱歉,如果这真的很基本,我对序言很陌生。