1
我想解決一個算術表達式在prolog(實現 - eclipse prolog)。要解決的算術表達式是這樣的:如何在序言中進行算術表達式評估?
A * (C + B * X) + D * X = E
X是要被計算的值,和所有其他(A,B,C,d,E)是所有數字。
例如:5×(3 + 2 * X)+ 2 * X = 39,在計算應與值2
查詢(目標)將被輸入到分配的Prolog X將採取形式:
?- compute(5*(3+2*X)+2*X = 39, Result).
'結果'和'X'的值應該綁定(分配)在一起。 如何編寫prolog程序來做到這一點..?
謝謝。
感謝您的摘錄,我測試過它的工作。然而,我對序言很陌生,無法理解X如何計算價值。我假設#=是一個延遲約束。你能指導我解決計算方法嗎?謝謝。 – kallakafar 2012-02-09 10:48:09
是的,'#=/2'表示一個整數約束。參見ECLiPSe的約束庫手冊中的3.1節,它解釋了ic解算器。裏面發生的事情是約束傳遞算法在約束被髮布時開始。這將更新連接到約束的變量的域,以使它們一致。在這種情況下,這足以獲得解決方案。 Marriott/Stuckey的「用約束編程」是一本很好的教科書,就像Apt/Wallace的「使用Eclipse進行約束邏輯編程」一樣。 – twinterer 2012-02-09 11:33:02
感謝這個方向,它確實有幫助!謝謝。 – kallakafar 2012-02-09 15:56:16