Между первым min и первым max элементами списка найти количество элементов меньших своего номера - Prolog
Формулировка задачи:
Помогите с этой задачей,очень нужно,пожалуйста!!!!
Решение задачи: «Между первым min и первым max элементами списка найти количество элементов меньших своего номера»
textual
Листинг программы
domains n=integer* predicates max(n,integer,integer) min(n,integer,integer) zadach2(integer,integer,integer,integer) z21(n,integer,integer,integer,integer,integer) clauses 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,! . z21(_,P2,_,P2,R,R):-!. z21([A|B],N,P1,P2,R1,R):-N>P1, A<N,R2=R1+1,N1=N+1,z21(B,N1,P1,P2,R2,R);N1=N+1,z21(B,N1,P1,P2,R1,R). goal readterm(n,X),max(X,A,M1),min(X,B,M2),zadach2(M1,M2,P1,P2),z21(X,1,P1,P2,0,R),write(R).
Объяснение кода листинга программы
Код решает следующую задачу: находит количество элементов в списке, которые меньше своего индекса+1. Для этого используется предположение, что элементы списка упорядочены по возрастанию. Список состоит из 20 элементов (обозначим их как A, B, C, ..., J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z). В начале кода определены следующие переменные:
- n - номер текущего элемента списка
- X - список элементов
- A - максимальный элемент списка
- M1 - номер первого максимального элемента списка
- B - минимальный элемент списка
- M2 - номер первого минимального элемента списка
- P1 - номер предыдущего элемента списка
- P2 - номер следующего элемента списка
- R - результат работы программы (количество элементов, меньших своего индекса+1) Затем определены следующие предикаты:
- max(n,integer,integer) - находит максимальный элемент списка и его номер
- min(n,integer,integer) - находит минимальный элемент списка и его номер
- zadach2(integer,integer,integer,integer) - проверяет условие M1<M2 для пар элементов (P1,P2), (P2,P1)
- z21(n,integer,integer,integer,integer,integer) - находит количество элементов, меньших своего индекса+1 В конце кода указана цель (goal), которая описывает действие программы:
- Считывание списка элементов
- Нахождение максимального и минимального элементов списка
- Проверка условия M1<M2 для пар элементов (P1,P2), (P2,P1)
- Нахождение количества элементов, меньших своего индекса+1
- Вывод результата на экран Таким образом, код решает задачу подсчета количества элементов в списке, которые меньше своего индекса+1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д