讲座讨论了运营商及其优先事项。虽然任务处于初级阶段,但我无法绕过哪里找到逻辑。
任务是使用met / 2谓词更改运算符:
?- met(q+w+e,Y).
Y=q-w-e.
?- met(q-w-e,Y).
Y=q+w+e.
我不介意人们以正确的方式推动我或直接给出答案。我已经用谷歌搜索了一段时间,却一无所获。我试过if-then,但它没有用。
提前致谢!
答案 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.