获取与prolog中的数字相加的两个数字的列表

时间:2014-11-04 20:19:14

标签: prolog sum

例如,getNumbers(M,C,10)将给出M = 10,C = 0&& M = 9,C = 1&& M = 8,C = 2 ......等等

1 个答案:

答案 0 :(得分:2)

按照你的建议使用:

getNumbers(M, C, S):-
  between(0, S, M),
  C is S - M.

要获取完整列表,请使用findall/3,例如这个查询:

?- findall([M,C], getNumbers(M, C, 5), Numbers).
Numbers = [[0, 5], [1, 4], [2, 3], [3, 2], [4, 1], [5, 0]].