【发布时间】:2013-12-25 22:49:32
【问题描述】:
我正在用 PROLOG 编写数独求解器。 我希望求解器能够处理所有可能大小的数独,因此我自然需要构造带有可变数量参数的谓词。 (例如在数独中构建“块”。)
如何构造或模拟具有可变数量参数的谓词?
【问题讨论】:
-
使用列表结构。
-
您能详细说明一下吗?我不太清楚你的意思。
-
Prolog 没有可变参数能力,但您可以使用列表。因此,您可以通过
length(L, 5), my_predicate(L)传递一个固定长度的可变列表结构,传递一个包含 5 个未实例化元素的列表。或者您可以动态创建列表。有关列表过程的更多信息,请参阅例如ling.helsinki.fi/kit/2004k/ctl272/Bangor/clbook_20.html。如果你想要一个 3x3 数独块,你可以传递一个包含 9 个元素的列表,或者一个包含 3 个列表的列表,每个列表包含 3 个元素。 -
网上也有几个数独求解器的例子,比如这里:programmablelife.blogspot.com/2012/07/…
标签: prolog variadic-functions predicate