我想使用斷言,如:序言 - 擬合給定數字生成列表範圍
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) - 你覺得如何?可能是另一種解決方案? –