創建算術和disequality限制我的品牌新的Prolog的,我很感興趣,將下面的文字題成(SWI)序言:如何Prolog的
有4個孩子:安倍晉三,丹,瑪麗和蘇。他們的年齡沒有特別的順序是3,5,6和8歲。安倍比丹年長。蘇比瑪麗還年輕。蘇的年齡是丹的年齡加上3年。瑪麗比安倍還年長。
到目前爲止,我已經拿出
child(X) :-
member(X, [3,5,6,8]).
solution(Abe, Dan, Mary, Sue) :-
child(Abe),
child(Dan),
child(Mary),
child(Sue),
Abe > Dan,
Sue < Mary,
Sue == Dan+3,
Mary > Abe,
Abe \== Dan,
Abe \== Mary,
Abe \== Sue,
Dan \== Mary,
Dan \== Sue,
Mary \== Sue.
但運行查詢
?- solution(Abe, Dan, Mary, Sue)
我只是得到false
。作爲一個側面的問題,Prolog會執行蠻力搜索解決方案,還是有一些機器可以解決這個問題(比O(n!)更好)?
我想要的結果是Abe = 5, Dan = 3, Mary = 9, Sue = 6
。
你必須寫**蘇=:=丹+ 3 ** **代替蘇==丹+ 3 ** – joel76
'蘇==丹+ 3'將不執行算術操作。你需要'Sue =:= Dan + 3'。 – lurker
哎呀!謝謝 – Brent