Prolog - 判断最大值的绝对值是否大于整数列表中最小值的绝对值
Prolog - Tell if abs value of max is greater then abs value of min in list of integers
我的任务有点改变。而且我还需要在序言中实现 abs 和 max 。我需要获取整数列表并判断最大值的绝对值是否大于最小值的绝对值。 – M
我的代码是这样的:
ismaxgreater([X],X).
ismaxgreater([X],X):-
maxlist([X],X).
%minlist([X],Y),
%abs([Y],Z),
%com(X,Z).
maxlist([X],X).
maxlist([X,Y |Rest],Max) :-
maxlist([Y | Rest], MaxRest),
max(X,MaxRest,Max).
minlist([X],X).
minlist([X,Y |Rest],Min) :-
maxlist([Y | Rest], MinRest),
max(X,MinRest,Min).
com(Max,Min) :- Max>Min,
write('Max is Bigger Value');
Max<Min,
write('Min is Bigger Value').
max(X,Y,X) :- X>= Y.
max(X,Y,Y) :- X < Y.
min(X,Y,X) :- X =< Y.
min(X,Y,Y) :- X > Y.
abs(X,Y) :- X < 0 -> Y is -X; Y = X.
但我只想像这样输入 Input :
ismaxgreater([1,2,-5,9])
输出应该是这样的:
Max is greater true
在此解决方案中,我们找到最大值和最小值并将最大值与最小值的绝对值进行比较。
max([X], X) :- !, true.
max([X|List], M):- max(List, M), M >= X.
max([X|List], X):- max(List, M), X > M.
min([X], X) :- !, true.
min([X|List], M):- min(List, M), M <= X.
min([X|List], X):- min(List, M), X > M.
ismaxgreater(X) :- max(X, Max), min(X, Min), Max > abs(Min);
我的任务有点改变。而且我还需要在序言中实现 abs 和 max 。我需要获取整数列表并判断最大值的绝对值是否大于最小值的绝对值。 – M
我的代码是这样的:
ismaxgreater([X],X).
ismaxgreater([X],X):-
maxlist([X],X).
%minlist([X],Y),
%abs([Y],Z),
%com(X,Z).
maxlist([X],X).
maxlist([X,Y |Rest],Max) :-
maxlist([Y | Rest], MaxRest),
max(X,MaxRest,Max).
minlist([X],X).
minlist([X,Y |Rest],Min) :-
maxlist([Y | Rest], MinRest),
max(X,MinRest,Min).
com(Max,Min) :- Max>Min,
write('Max is Bigger Value');
Max<Min,
write('Min is Bigger Value').
max(X,Y,X) :- X>= Y.
max(X,Y,Y) :- X < Y.
min(X,Y,X) :- X =< Y.
min(X,Y,Y) :- X > Y.
abs(X,Y) :- X < 0 -> Y is -X; Y = X.
但我只想像这样输入 Input :
ismaxgreater([1,2,-5,9])
输出应该是这样的:
Max is greater true
在此解决方案中,我们找到最大值和最小值并将最大值与最小值的绝对值进行比较。
max([X], X) :- !, true.
max([X|List], M):- max(List, M), M >= X.
max([X|List], X):- max(List, M), X > M.
min([X], X) :- !, true.
min([X|List], M):- min(List, M), M <= X.
min([X|List], X):- min(List, M), X > M.
ismaxgreater(X) :- max(X, Max), min(X, Min), Max > abs(Min);