Создайте предикат, находящий список, состоящий из среднего геметрического элементов строк матрицы - Prolog
Формулировка задачи:
Ребята. Вот задание: Создайте предикат, находящей список, состоящий из среднегеометрического элементов строк матрицы, представленной многоуровневым списком. Уже всю голову сломал. SWI Prolog
И вторая: Создайте предикат, находящий в исходной строке слова, начинающиеся с буквы f.
Ребята помогите пожалуйста
Решение задачи: «Создайте предикат, находящий список, состоящий из среднего геметрического элементов строк матрицы»
textual
Листинг программы
domains rl=real* matr=rl* predicates pow(real,real,real) len(rl,real) product(rl,real) sgeom(rl,real) task(matr,rl) clauses pow(X,Y,Z) :- Z=exp(Y*ln(X)). len([],0.0). len([_|T],L) :- len(T,L1), L=L1+1.0. product([],1.0). product([X|T],R) :- product(T,R1), R=R1*X. sgeom(X,R) :- product(X,P), len(X,L), Q=1.0/L, pow(P,Q,R). task([],[]). task([H|T],[HH|TT]) :- sgeom(H,HH), task(T,TT).
Объяснение кода листинга программы
- В коде используется язык программирования Prolog.
- Задача состоит в создании предиката, который находит список, состоящий из среднего геометрического элементов строк матрицы.
- Для решения задачи определены следующие домены и предикаты:
- Домен
rl
представляет вещественные числа. - Домен
matr
представляет матрицу из доменаrl
. - Предикат
pow
вычисляет возведение в степень. - Предикат
len
вычисляет длину списка. - Предикат
product
вычисляет произведение элементов списка. - Предикат
sgeom
вычисляет среднее геометрическое элементов списка. - Предикат
task
выполняет задачу, которая заключается в нахождении списка, состоящего из среднего геометрического элементов строк матрицы.
- Домен
- В коде определены следующие утверждения:
- Утверждение
pow(X,Y,Z) :- Z=exp(Y*ln(X))
вычисляет возведение в степень. - Утверждение
len([],0.0)
определяет длину пустого списка равной 0. - Утверждение
len([_|T],L) :- len(T,L1), L=L1+1.0
рекурсивно определяет длину списка, учитывая его голову и хвост. - Утверждение
product([],1.0)
определяет произведение пустого списка равным 1. - Утверждение
product([X|T],R) :- product(T,R1), R=R1*X
рекурсивно определяет произведение элементов списка, учитывая его голову и хвост. - Утверждение
sgeom(X,R) :- product(X,P), len(X,L), Q=1.0/L, pow(P,Q,R)
вычисляет среднее геометрическое элементов списка. - Утверждение
task([],[])
определяет пустой список в качестве результата для пустой матрицы. - Утверждение
task([H|T],[HH|TT]) :- sgeom(H,HH), task(T,TT)
рекурсивно определяет список, состоящий из среднего геометрического элементов строк матрицы.
- Утверждение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д