Prolog:与第三个列表中的元素相比,两个列表的元素总和

时间:2015-10-13 17:33:18

标签: list prolog

我有3个名单。前两个列表&#39;添加元素数量并与第三个列表var searchTypes = { Material, Vendor, }; // ... var Component = searchTypes[searchType.name]; return ( <div className='row'> <h1>Search Results ({items.length}/{itemsCount})</h1> <Component items={items} /> </div> ); 进行比较。检查前两个列表的总和,以查看元素的总数是否小于或等于第三个列表中的元素数。这就是我现在拥有的。我在compare(List1,List2,List3)时收到错误。

Total is Total+1

这是我到目前为止所拥有的。

1 个答案:

答案 0 :(得分:0)

您的计划中有一些错误:

第一:
删除Tx变量的实例化为零T1 is 0, T2 is 0, T3 is 0,您不需要初始化此变量,也不应该在同一规则中的多个条件中实例化相同的变量。结果可能不是预期的。

第二:
使用另一个变量来实例化T1和T2之和T4 is T1 + t2, T4 =< T3

最后,对于空列表

,您的谓词addUp/2需要基本情况
addUp([],0).

并替换变量Head的最后一个数字1。您应该将列表的第一个元素添加到尾部的总和。

addUp([Head | Tail], Total) :-
 addUp(Tail, Total1), Total is Total1 + Head.

最终计划:

lessThanEq(List1, List2, List3) :-
    addUp(List1,T1),addUp(List2, T2), addUp(List3, T3),
    T4 is T1 + T2, T4 =< T3.

addUp([],0).
addUp([Head | Tail], Total) :-
    addUp(Tail, Total1), Total is Total1 + Head.