list([1,2,3,4]).
len([],0).
len([_|T],X):-
len(T,X1),
X is X1+1.
sum([],0).
sum([H|T],X):-
sum(T,X1),
X is X1+H.
max_element([X],X).
max_element([H1,H2|T],Max):-
H1>H2,!,
max_element([H1|T],Max).
max_element([H1,H2|T],Max):-
max_element([H2,T],Max).
min_element([X],X).
min_element([H1,H2|T],Min):-
H1<H2,!,
min_element([H1|T],Min).
min_element([H1,H2|T],Min):-
min_element([H2,T],Min).
您好,我是Prolog的新手,应该创建一个谓词start/1
,该谓词将加载一个整数列表并调用上面列出的谓词,并且还应返回以换行符分隔的值。非常抱歉,如果这没有道理,但我不知道如何实现,将非常感谢初学者的帮助,非常感谢。
答案 0 :(得分:0)
我已经重新编辑了您编写的某些功能。这样我就可以轻松按所需方式打印它们。
sum([X],X):- write(X).
sum([H,H1|T],Z):- H2 is H+H1 , sum([H2|T],Z).
min([],Z):- write(Z).
min([H|T],Z):- H<Z , Z1 is H , min(T, Z1).
min([H|T],Z):- H>Z ,min(T ,Z).
max([],Z):- write(Z).
max([H|T],Z):- H>Z , Z1 is H , max(T, Z1).
max([H|T],Z):- H<Z ,max(T ,Z).
len([],S):- write(S).
len([_|T],Z):- Z1 is Z+1 , len(T,Z1) .
list(Z):- write('sum :- ') , sum(Z,_), nl ,write('min:- ') , min(Z,99) , nl, write('max:- '), max(Z,0) ,nl, write('len:- ') , len(Z,0).
下面必须传递的查询才能以所需的方式获得输出。希望这对您有所帮助。
?- list([1,2,3]).
sum :- 6
min:- 1
max:- 3
len:- 3
true