Главная
»
Информационные системы
»
Представление знаний в ИС
»
Опишите предикат, определяющий количество возрастающих подпоследовательностей
Опишите предикат, определяющий количество возрастающих подпоследовательностей
Вариант 1:
% Bilet2
% Patched 14.01.13
% To start type: jstart.
podposl([],[]).
podposl([X|L1],[X|L2]):-podposl(L1,L2).
podposl(L1,[Y|L2]):-podposl(L1,L2).
vozrast([]).
vozrast([X]).
vozrast([X,Y|L]):- X<Y, vozrast([Y|L]).
vozrastpodposl(L1,L2):-podposl(L1,L2), vozrast(L1).
kol(0,[]).
kol(K,[Y|L]):- kol(K1,L), K is K1+1.
kvp(L,K,L1):-setof(X,vozrastpodposl(X,L),L1),kol(K,L1).
jstart:- write(' Vvedite spisok L1: '),nl,read(LJAM1),nl,
write(' Vivod spiska L1= '),
write(LJAM1),nl,
kvp(LJAM1,Z1,Z2),
write(' Result= '),
write(Z1),nl,
write(Z2).
Вариант 2 (сторонний источник):
% Bilet2 Variant 2
% Patched 14.01.13
% To start type: jstart.
%Опишите предикат, определяющий количество возрастающих подпоследовательностей
%заданного списка. %
%%%%%%%%%%%%%%%%%%%%%% кол-во элементов списка %%%%%%%%%%%%%%%%%%%%%%%%%%%
kol_il(0,[]).
kol_il(K,[X|L]):-kol_il(S1,L),K is 1+S1.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
min_il(X,[X]).
min_il(X,[X|L]):- min_il(Y,L),Y>=X.
min_il(X,[Y|L]):- min_il(X,L), Y>X.
vosr_posl([]).
vosr_posl([X]).
vosr_posl([X|L]):-min_il(Y,L),
X=<Y,
vosr_posl(L).
%**********************************************************************%
% подпоследовательность- это части списка ,элементы должны быть %
% в той же последовательности, но %
% не обязательно стоящие pядом . %
% podposled ( подпослед, данный список) %
%**********************************************************************%
podposled([],[]).
podposled(X,[_|T]):-
podposled(X,T).
podposled([X|T],[X|R]):-podposled(T,R).
vosr_podposled(L,P):-podposled(P,L),
vosr_posl(P).
spis_vosr_podposled(L,S,K):- setof(P,vosr_podposled(L,P),S),
kol_il(K,S).
%patch start
jstart:- write(' Vvedite spisok L: '),nl,read(LJAM),nl,
write(' Vivod spiska L= '),
write(LJAM),nl,
write(' Result= '),
kol_il(LJAM,Z).
Друзья! Приглашаем вас к обсуждению. Если у вас есть своё мнение, напишите нам в комментарии.