[英]Prolog: sum of elements of two lists compared to elements in third list
我得到3個清單。 將前兩個列表的元素數量相加並與第三個列表compare(List1,List2,List3)
。 檢查前兩個列表的總和,以查看元素總數是否小於或等於第三個列表中的元素數量。 這就是我目前所擁有的。 我收到的錯誤是Total is Total+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.
到目前為止,這就是我所擁有的。
您的程序中有一些錯誤:
第一:
刪除Tx變量的實例化為零T1 is 0, T2 is 0, T3 is 0
,您無需初始化此變量,也不應在同一規則中的多個條件下實例化同一變量。 結果可能不是預期的。
第二:
使用不同的變量來實例化T1和T2的和, T4 is T1 + t2, T4 =< T3
最后,謂詞addUp/2
需要基本情況,用於空列表
addUp([],0).
並將最后一個數字1替換為變量Head。 您應該將列表的第一個元素添加到結尾的總和中。
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.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.