簡體   English   中英

Prolog:兩個列表中元素的總和與第三列表中元素的比較

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM