有人可以解释我什么是“!” 在 Prolog 中做什么?我不明白。这里我有一个代码,用于计算异构列表中有多少个子列表具有山峰。
nrSubliste([], 0).
nrSubliste([H|T], R):-
is_list(H),
munteMain(H),!,
nrSubliste(T, R1),
R is R1 + 1.
nrSubliste([_|T], R):-
nrSubliste(T, R).
Run Code Online (Sandbox Code Playgroud)
munteMain 验证线性列表是否具有山峰。
我必须从Prolog中的列表中删除最长的质数序列。我是Prolog的新手,我找不到找到最长序列的方法...这是我到目前为止所做的:
divisible(X,Y):-
0 is X mod Y.
divisible(X,Y):-
X > Y + 1,
divisible(X,Y+1).
is_prime(2).
is_prime(3).
is_prime(P):-
integer(P),
P>3,
P mod 2 =\= 0,
not(divisible(P,3)).
Run Code Online (Sandbox Code Playgroud)
这将从列表中删除素数。
removeP([],[]).
removeP([H],[H]):-
not(is_prime(H)).
removeP([H|T],[H|L]):-
not(is_prime(H)),
removeP(T,L).
removeP([H|T],L):-
is_prime(H),
removeP(T,L).
Run Code Online (Sandbox Code Playgroud)
在这里,我试图找到最长的序列,但是我不知道下一步该怎么做。
longest([],[]).
longest([H],[H]):-
is_prime(H).
longest([H],[]):-
not(in_prime(H)).
longest([H|T],L):-
....
Run Code Online (Sandbox Code Playgroud)