これが次の質問です。
この問題では、葉がtree(empty, Num, empty)
Num が数値である形式であるかtree(empty, z, empty)
、文字 z を一種の「変数」と見なす場合のいずれかである二分式ツリーを考えます。
すべての木は葉であるか、tree(L, Op, R)
L と R が左右の部分木で、Op が算術演算子 '+'、'-'、'*'、'/' (加算、減算、掛け算と割り算)。
tree_eval(Value, Tree, Eval)
指定された値に等しい変数 z を設定して、式ツリー Tree の評価結果に Eval をバインドする述語を記述します。例えば:
?- tree_eval(2, tree(tree(empty,z,empty),
'+',tree(tree(empty,1,empty),
'/',tree(empty,z,empty))), Eval).
Eval = 2.5 ;
false.
?- tree_eval(5, tree(tree(empty,z,empty),
'+',tree(tree(empty,1,empty),
'/',tree(empty,z,empty))), Eval).
Eval = 5.2 ;
false.
良いアイデア?
cut(!) を使用せずに実現できますか?
みんなありがとう!