Найти количество элементов списка, меньших своего номера - Prolog
Формулировка задачи:
найти количество элементов меньше своего номера.
Плиз.не могу разобраться,вот что у меня есть,помогите,очень срочно нужно)))
Листинг программы
- domains
- n=integer*
- predicates
- max(n,integer,integer)
- min(n,integer,integer)
- zadach2(integer,integer,integer,integer)
- index(n,integer,integer)
- z21(n,integer,integer,integer,integer,integer)
- max([A|B],R,N):-max(B,R,Nom),R>A,N=Nom+1,!.
- max([A|_],A,1):-!.
- min([A|B],R,N):-min(B,R,Nom),R<A,N=Nom+1,!.
- min([A|_],A,1):-!.
- zadach2(M1,M2,P1,P2):-M1<M2,P1=M1,P2=M2,!;P2=M1,P1=M2,! .
- index([],_,0):-!.
- index([A|B],N,K):-N<>K,K1=K+1,index(B,N,K1).
- z21(_,P2,_,P2,S,S):-!.
- z21([A|B],N,P1,P2,S1,S):-N>=P1,index(B,N,K),A<K,N1=N+1,S2=S1+1,z21(B,N1,P1,P2,S2,S);
- N>=P1,index(B,N,K),A>=K,N1=N+1,z21(B,N1,P1,P2,S1,S);
- N<P1,N1=N+1,z21(B,N1,P1,P2,S1,S).
- goal
- readterm(n,X),max(X,A,M1),min(X,B,M2),zadach2(M1,M2,P1,P2),index(X,K,1),z21(X,1,P1,P2,0,S),write(S).
Решение задачи: «Найти количество элементов списка, меньших своего номера»
textual
Листинг программы
- domains
- int=integer
- intl=int*
- predicates
- counter(intl,int,int)
- task(intl,int)
- clauses
- counter([],_,0).
- counter([H|T],Z,R) :- H>=Z, Z1=Z+1, counter(T,Z1,R).
- counter([H|T],Z,R) :- H<Z, Z1=Z+1, counter(T,Z1,R1),R=R1+1.
- task(X,N) :- counter(X,1,N).
Объяснение кода листинга программы
- В коде дано два домена: int (целое число) и intl (массив целых чисел).
- Также в коде определены две предикаты: counter (счетчик) и task (задача).
- Условие задачи: необходимо найти количество элементов списка, меньших своего номера.
- В первом правиле (clause) для пустого списка ([]) счетчик равен 0.
- Во втором правиле (clause) для списка с элементом H (H>=Z) счетчик равен Z1=Z+1 и рекурсивно вызывается функция counter для списка T и нового значения Z1.
- В третьем правиле (clause) для списка с элементом H (H<Z) счетчик равен R1=R+1 и рекурсивно вызывается функция counter для списка T и нового значения Z1.
- В функции task(X,N) используется счетчик counter для подсчета количества элементов списка X, меньших значения N.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д