gpt4 book ai didi

prolog - 如何计算序言代码知识库中现有列表的平均值?

转载 作者:行者123 更新时间:2023-12-01 15:30:45 25 4
gpt4 key购买 nike

例如,我一直在尝试拥有一个列表 [1,3] 并在代码中计算其平均值,而无需输入最少的本身。我不确定使它工作的正确语法,只有第一行有问题,因为如果我在运行序言时调用 average 并输入数字,它工作得很好。

average([1,3],X).


average(List, Result) :- sum1(List, Len), sum(List, Sum), Result is Sum / Len.

sum([], 0).

sum([H|T], Sum) :- sum(T, Temp), Sum is Temp + H.


sum1([],0).

sum1([_|B],L):-sum1(B,Ln), L is Ln+1.

最佳答案

好吧,你不想一直输入列表。这意味着,您应该拥有类似 my_list/1 的谓词并在您的程序中使用它。

my_list( [1,3] ).

average_easy( List, Avg ) :-
sum_( List, Sum ),
length_( List, Length ),
Avg is Sum / Length.

sum_( [], 0 ).
sum_( [H|T], Sum ) :-
sum_( T, Temp ),
Sum is Temp + H.

length_( [], 0 ).
length_( [_|B], L ):-
length_( B, Ln ),
L is Ln+1.

main :-
my_list( X ),
average_easy( X, Ans ),
writeln((X, Ans)).

所以,我们现在得到的是

?- [your_program_name].
% your_program_name compiled 0.00 sec, 64 bytes
true.

?- main.
[1,3],2
true.

顺便说一句,有 length/2谓词,已经内置在 swi-prolog 中。

关于prolog - 如何计算序言代码知识库中现有列表的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7936307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com