prolog如何评估数学表达式

时间:2017-04-28 05:25:55

标签: prolog

我正在攻读考试,我在书中遇到了prolog部分和这个问题。我想创建一个谓词&评估&#39;当给定任何表达式时,将值设置为R. IE: <?php $data = [ [ 'company_code' => 'ABC', 'supplier_codes' => ['S-2','S-3','S-5'], ], ]; $database = [ 'company_code' => 'ABC', 'suppliers' => [ [ 'code' => 'S-1', ], [ 'code' => 'S-2', 'reference' => '12345' ], [ 'code' => 'S-3', ], [ 'code' => 'S-4', 'reference' => 'some string', ] ], ]; foreach($database['suppliers'] as $k=>$v){ foreach($data as $kd=>$vd){ $valueremove = false; $removeIndex = ''; foreach($vd['supplier_codes'] as $key=>$val){ if($val == $v['code']){ $valueremove = false; $removeIndex = ''; break; } else { $valueremove = true; $removeIndex = $k; } } if($valueremove == true){ unset($database['suppliers'][$removeIndex]); } else { $valueinsert = false; foreach($data as $kd=>$vd){ foreach($vd['supplier_codes'] as $key=>$val){ foreach($database['suppliers'] as $kc=>$vc){ if($val == $vc['code']){ $valueinsert = false; $insertIndex = ''; $insertVal = ''; break; } else { $valueinsert = true; $insertIndex = count($database['suppliers'])+1; $insertVal = $val; } } if($valueinsert == true){ $database['suppliers'][$insertIndex] = array('code'=>$insertVal); } } } } } } echo "<PRE>"; print_r($database); 它的计算结果为R = 400.我将如何创建它?

1 个答案:

答案 0 :(得分:0)

正如@Dmitri Chubarov建议你可以使用is/2

evaluate(X,R):- R is X.

以上简单地说R是X的算术结果,因此is/2进行所有算术运算并返回算术结果。

示例:

?- A=4,B=5, evaluate(((A*B)-2)/3,R).
A = 4,
B = 5,
R = 6.