Найти количество элементов списка, меньших своего номера - Prolog

Узнай цену своей работы

Формулировка задачи:

найти количество элементов меньше своего номера. Плиз.не могу разобраться,вот что у меня есть,помогите,очень срочно нужно)))
Листинг программы
  1. domains
  2. n=integer*
  3. predicates
  4. max(n,integer,integer)
  5. min(n,integer,integer)
  6. zadach2(integer,integer,integer,integer)
  7. index(n,integer,integer)
  8. z21(n,integer,integer,integer,integer,integer)
  9. max([A|B],R,N):-max(B,R,Nom),R>A,N=Nom+1,!.
  10. max([A|_],A,1):-!.
  11. min([A|B],R,N):-min(B,R,Nom),R<A,N=Nom+1,!.
  12. min([A|_],A,1):-!.
  13. zadach2(M1,M2,P1,P2):-M1<M2,P1=M1,P2=M2,!;P2=M1,P1=M2,! .
  14. index([],_,0):-!.
  15. index([A|B],N,K):-N<>K,K1=K+1,index(B,N,K1).
  16. z21(_,P2,_,P2,S,S):-!.
  17. 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);
  18. N>=P1,index(B,N,K),A>=K,N1=N+1,z21(B,N1,P1,P2,S1,S);
  19. N<P1,N1=N+1,z21(B,N1,P1,P2,S1,S).
  20. goal
  21. 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
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6. counter(intl,int,int)
  7. task(intl,int)
  8.  
  9. clauses
  10. counter([],_,0).
  11. counter([H|T],Z,R) :- H>=Z, Z1=Z+1, counter(T,Z1,R).
  12. counter([H|T],Z,R) :- H<Z, Z1=Z+1, counter(T,Z1,R1),R=R1+1.
  13.  
  14. task(X,N) :- counter(X,1,N).

Объяснение кода листинга программы

  1. В коде дано два домена: int (целое число) и intl (массив целых чисел).
  2. Также в коде определены две предикаты: counter (счетчик) и task (задача).
  3. Условие задачи: необходимо найти количество элементов списка, меньших своего номера.
  4. В первом правиле (clause) для пустого списка ([]) счетчик равен 0.
  5. Во втором правиле (clause) для списка с элементом H (H>=Z) счетчик равен Z1=Z+1 и рекурсивно вызывается функция counter для списка T и нового значения Z1.
  6. В третьем правиле (clause) для списка с элементом H (H<Z) счетчик равен R1=R+1 и рекурсивно вызывается функция counter для списка T и нового значения Z1.
  7. В функции task(X,N) используется счетчик counter для подсчета количества элементов списка X, меньших значения N.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы