List 序言:两个列表中的元素与第三个列表中的元素之和

List 序言:两个列表中的元素与第三个列表中的元素之和,list,prolog,List,Prolog,给我3张名单。将前两个列表的元素数相加,并与第三个列表进行比较,compare(List1、List2、List3)。检查前两个列表的总和,查看元素总数是否小于或等于第三个列表中的元素数。这就是我现在拥有的。我在总计为总计+1时出错 lessThanEq(List1, List2, List3) :- T1 is 0, T2 is 0, T3 is 0, addUp(List1, T1), addUp(List2, T2), addUp(List3, T3)

给我3张名单。将前两个列表的元素数相加,并与第三个列表进行比较,
compare(List1、List2、List3)
。检查前两个列表的总和,查看元素总数是否小于或等于第三个列表中的元素数。这就是我现在拥有的。我在
总计为总计+1
时出错

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

addUp([Head|Tail], Total) :-
   addUp(Tail, Total1),
   Total is Total1+1.
lessThanEq(列表1、列表2、列表3):-
T1是0,
T2是0,
T3是0,
相加(列表1,T1),
合计(列表2,T2),
合计(列表3,T3),
T1是T1+T2,
T1=

这就是我目前所拥有的

您的程序中有一些错误:

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

第二:
使用不同的变量实例化T1和T2之和,
T4为T1+T2,T4=

最后,您的谓词
addUp/2
需要空列表的基本大小写

addUp([],0).
并更换可变磁头的最后一个数字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.
lessThanEq(列表1、列表2、列表3):-
加法(列表1,T1),加法(列表2,T2),加法(列表3,T3),
T4为T1+T2,T4=
您的程序中有一些错误:

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

第二:
使用不同的变量实例化T1和T2之和,
T4为T1+T2,T4=

最后,您的谓词
addUp/2
需要空列表的基本大小写

addUp([],0).
并更换可变磁头的最后一个数字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.
lessThanEq(列表1、列表2、列表3):-
加法(列表1,T1),加法(列表2,T2),加法(列表3,T3),
T4为T1+T2,T4=
不能在谓词子句中重新分配变量值。因此,
T1是T1+T2
将始终失败(
T1
本身不能加上
T2
的值),除非
T2
的值恰好为零。不能在谓词子句中重新分配变量值。因此,
T1是T1+T2
将始终失败(
T1
本身不能加上
T2
的值),除非
T2
的值恰好为零。