Prolog中的和计算

时间:2017-12-12 16:02:04

标签: list prolog sum

说我在Prolog中有两个'表',例如:

item_value('Chair', 50).          
item_value('Table', 100).        
item_value('Plant', 75).

还有一个:

shopping_cart('Max', ['Chair', 'Chair', 'Table']).            
shopping_cart('Sam', ['Plant', 'Table']).

我现在想编写一个谓词,用于计算购物车内商品的总和,例如 total_sum(人,总和)

我该怎么做?我无法在Prolog中对此进行编码 提前谢谢!

1 个答案:

答案 0 :(得分:0)

请尝试以下代码:

item_value('Chair', 50).          
item_value('Table', 100).        
item_value('Plant', 75).

shopping_cart('Max', ['Chair', 'Chair', 'Table']).            
shopping_cart('Sam', ['Plant', 'Table']).

total_sum(Person, Sum) :-
    shopping_cart(Person, ItemList),
    maplist(item_value, ItemList, CostList),
    foldl(plus, CostList, 0, Sum).