これは、私が問題を抱えているテスト レビューの質問です。演算子「plus」、「minus」、「times」を使用して代数式を評価する方法をどのように記述しますか。以下にいくつかのテスト クエリを示します。
simple(式、結果、リスト)
?- simplify(plus(times(x,y),times(3 ,minus(x,y))),V,[x:4,y:2]). V = 14
?- simplify(times(2,plus(a,b)),Val,[a:1,b:5]). Val = 12
?- simplify(times(2,plus(a,b)),Val,[a:1,b:(-5)]). Val = -8
私に与えられたのはこれらのサンプル クエリだけで、それ以外の説明はありませんでした。しかし、メソッドが代数式である最初の引数を分析し、3 番目の引数 (リスト) の値を x と y に置き換えていることは確かです。2 番目の引数は、式を評価した後の結果でなければなりません。
メソッドの 1 つは simple(V, Val, L) :- member(V:Val, L) であるべきだと思います。理想的には、あと 4 つの方法しかないはずですが、どうすればよいかわかりません。
私はこれまでに何を持っていますが、体がどうあるべきかわかりません:
simplify(Var, Value, Lst) :- member(Var:Value, Lst).
simplify(plus(Var), Value, Lst) :-
simplify(minus(Var), Value, Lst) :-
simplify(times(Var), Value, Lst) :-
5番目の方法がどうあるべきかわかりません。