【问题标题】:Calling predicates from another predicate从另一个谓词调用谓词
【发布时间】:2019-12-03 06:46:56
【问题描述】:
   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 来加载整数列表并调用上面列出的谓词,它还应该返回用换行符分隔的值。如果这没有意义,我非常抱歉,但我不知道如何实现这一点,非常感谢对初学者的任何帮助,非常感谢。

【问题讨论】:

    标签: list function prolog


    【解决方案1】:

    我重新编辑了您编写的一些函数。这样我就可以轻松地按照您想要的方式打印它们。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多