Prolog 序言高于
在序言中,找出谁最高的最简单方法是什么:Prolog 序言高于,prolog,Prolog,在序言中,找出谁最高的最简单方法是什么: height(lisa,1.65). height(sam,1.70). height(luke,1.92). height(nicole,1.54). height(lisa,1.65). height(sam,1.70). height(luke,1.92). height(nicole,1.54). 我想写作 tallest(X) :- Y is bigger than other Y's SWI Prolog有一些不同的方法来解决这个问题,
height(lisa,1.65).
height(sam,1.70).
height(luke,1.92).
height(nicole,1.54).
height(lisa,1.65).
height(sam,1.70).
height(luke,1.92).
height(nicole,1.54).
我想写作
tallest(X) :- Y is bigger than other Y's
SWI Prolog有一些不同的方法来解决这个问题,例如通过库 ?由[descH]订购,高度,H。 H=1.92, P=卢克; ... 或使用图书馆: ?-聚合最大值,P,高度,H,最大值,P。 P=卢克。 不太复杂的开场白可能会提供setof/3和last/2: ?设置H:P,高度P,H,L,最后。 P=卢克, L=[1.54:nicole,1.65:lisa,1.7:sam,1.92:luke]。 还有更基本的发动机,缺少setof/3,将提供
?- height(P,H),\+((height(_,L),L>H)).
P = luke,
H = 1.92 ;
SWI Prolog有一些不同的方法来解决这个问题,例如通过库 ?由[descH]订购,高度,H。 H=1.92, P=卢克; ... 或使用图书馆: ?-聚合最大值,P,高度,H,最大值,P。 P=卢克。 不太复杂的开场白可能会提供setof/3和last/2: ?设置H:P,高度P,H,L,最后。 P=卢克, L=[1.54:nicole,1.65:lisa,1.7:sam,1.92:luke]。 还有更基本的发动机,缺少setof/3,将提供
?- height(P,H),\+((height(_,L),L>H)).
P = luke,
H = 1.92 ;
有几种方法可以避免写入最大高度:
有一些方法可以避免写max_height:假设tallestX成功了,如果而且只有当人X比所有其他人都高,我认为正确的答案是:
tallest(X) :-
height(X, H),
forall((height(Y, H1),
X \= Y),
H > H1), !.
第一种情况:
height(lisa, 1.65).
height(sam, 1.70).
height(luke, 1.92).
height(nicole, 1.54).
height(bob, 1.92). % Bob is as tall as Luke!
第二种情况:
height(lisa, 1.65).
height(sam, 1.70).
height(luke, 1.92).
height(nicole, 1.54).
height(bob, 1.92). % Bob is as tall as Luke!
假设tallestX成功的条件是,并且只有当人X比所有其他人都高,我认为正确的答案是:
tallest(X) :-
height(X, H),
forall((height(Y, H1),
X \= Y),
H > H1), !.
第一种情况:
height(lisa, 1.65).
height(sam, 1.70).
height(luke, 1.92).
height(nicole, 1.54).
height(bob, 1.92). % Bob is as tall as Luke!
第二种情况:
height(lisa, 1.65).
height(sam, 1.70).
height(luke, 1.92).
height(nicole, 1.54).
height(bob, 1.92). % Bob is as tall as Luke!
仅当height/2恰好在源中按高度排序时,setof/3才起作用?仅当height/2恰好在源中按高度排序时,setof/3才起作用?