我想使用断言,如:序言 - 拟合给定数字生成列表范围
range(X,0,5)
range(X,4,200)
range(X,-1000000,1000000)
dom_range(X,-1000000,1000000)
与意义:
range(X,0,5) :- member(X,[0,1,2,3,4,5]).
range(X,4,200) :- member(X,[4,5,6...198,199,200]).
range(X,-1000000,1000000) :- member(X,[-1000000,...,1000000]).
dom_range(X,-1000000,1000000) :- domain(X, [-1000000,...,1000000]).
如何Prolog的代码它很好地(考虑解决方案的性能成账户 - 递归深度等)?
解决方案预计在GNU-Prolog上运行。
P.S.问题的启发是this question。
是否适用于'domain()'? –
究竟是什么域?我无法告诉你在上述情况下你期望的dom_range。这是另一种将参数传递给范围的方法吗? dom_range(Out,[Low,High]): - 范围(Out,Low,High)。 – DaveEdelstein
我在[本教程](http://wazniak.mimuw.edu.pl/index.php?title=Sztuczna_inteligencja/SI_Modu%C5%82_3_-_Wnioskowanie_w_PROLOG-u)上阅读过有关“域名”的内容,但我是不确定细节,因为我是Prolog初学者。在检查Gnu-Prolog手册时,我发现[fd_domain/3](http://www.gprolog.org/manual/gprolog.html#htoc321),指定为[fd_domain(+ fd_variable_list_or_fd_variable,+ integer,+ integer) ](http://www.gprolog.org/manual/gprolog.html#htoc321) - 你觉得如何?可能是另一种解决方案? –