更改Prolog中的运算符

时间:2016-09-14 14:32:17

标签: prolog

讲座讨论了运营商及其优先事项。虽然任务处于初级阶段,但我无法绕过哪里找到逻辑。

任务是使用met / 2谓词更改运算符:

?- met(q+w+e,Y).       
Y=q-w-e. 

?- met(q-w-e,Y).
Y=q+w+e.

我不介意人们以正确的方式推动我或直接给出答案。我已经用谷歌搜索了一段时间,却一无所获。我试过if-then,但它没有用。

提前致谢!

1 个答案:

答案 0 :(得分:3)

任何Prolog术语都可以表示为树。例如,对于术语var data = { projects: [{ name: 'Project X', jobs_running: [ [1459814400000, 121], [1459900800000, 205], [1459987200000, 155], [1460073600000, 458] ], jobs_pending: [ [1459814400000, 146], [1459900800000, 149], [1459987200000, 158], [1460073600000, 184] ] }, { name: 'Project Y', jobs_running: [ [1459814400000, 221], [1459900800000, 295], [1459987200000, 255], [1460073600000, 258] ], jobs_pending: [ [1459814400000, 246], [1459900800000, 249], [1459987200000, 258], [1460073600000, 284] ] }] }; nueva(data); function nueva(current_data) { var seriesOptions = [], type = ['jobs_running', 'jobs_pending']; for (var j = 0; j < current_data['projects'].length; j++) { var project = current_data['projects'][j]; for (var i = 0; i < type.length; i++) { seriesOptions.push({ name: project.name + ' ' + type[i], data: project[type[i]] }); } } $('#containerChart').highcharts('StockChart', { series: seriesOptions }); } ,并假设中缀运算符q+w+e的标准运算符定义,我们有:

(+)/2

现在,如果你有一棵树,你可以遍历它并在每个非叶节点上进行所需的转换。 部分解决方案:

?- write_canonical(q+w+e).
+(+(q,w),e)
true.