4
我想知道如何解決一個未知的基本線性方程。使用Prolog的一個未知的線性方程
我試圖通過字符串分割來獲得我需要的一切來解決方程,但我相信有更好的方法。
solve(5 + X = 10).
X = 5.
solve(5+8 = Ans).
Ans = 13.
這是我試圖解決的事情。我想用解決方案/ 1。
預先感謝您。
我想知道如何解決一個未知的基本線性方程。使用Prolog的一個未知的線性方程
我試圖通過字符串分割來獲得我需要的一切來解決方程,但我相信有更好的方法。
solve(5 + X = 10).
X = 5.
solve(5+8 = Ans).
Ans = 13.
這是我試圖解決的事情。我想用解決方案/ 1。
預先感謝您。
你可以寫:
:- use_module(library(clpfd)).
solve(X+Y=Z):-X+Y#=Z.
一些例子:
?- solve(5+X=10).
X = 5.
?- solve(5+8=ANS).
ANS = 13.
爲了解決這個問題,而不庫,你可以寫:
solve(S):-var(S),throw("instatiation error").
solve(X+Y=Z):-(var(X),var(Y);var(X),var(Z);
var(Y),var(Z)),throw("instatiation error").
solve(X+Y=Z):-nonvar(Z),nonvar(Y),L is Z-Y,X=L.
solve(X+Y=Z):-nonvar(Z),nonvar(X),L is Z-X,Y=L.
solve(X+Y=Z):-nonvar(X),nonvar(Y),L is X+Y,Z=L.
又一次的例子:
?- solve(5+X=10).
X = 5 ;
false.
?- solve(5+8=Ans).
Ans = 13.
有沒有辦法通過不使用libaries來解決這個問題? –
我的意思是它可以像這樣工作:解決(X + Y = Z): - X是Z-Y; Y是Z-X; Z是X + Y.' 但我不知道如何讓它根據已經給出的選擇做選擇。 @coder –
更新了答案,希望它有幫助! – coder