Создайте предикат, находящий список, состоящий из среднего геметрического элементов строк матрицы - 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).

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

  1. В коде используется язык программирования Prolog.
  2. Задача состоит в создании предиката, который находит список, состоящий из среднего геометрического элементов строк матрицы.
  3. Для решения задачи определены следующие домены и предикаты:
    • Домен rl представляет вещественные числа.
    • Домен matr представляет матрицу из домена rl.
    • Предикат pow вычисляет возведение в степень.
    • Предикат len вычисляет длину списка.
    • Предикат product вычисляет произведение элементов списка.
    • Предикат sgeom вычисляет среднее геометрическое элементов списка.
    • Предикат task выполняет задачу, которая заключается в нахождении списка, состоящего из среднего геометрического элементов строк матрицы.
  4. В коде определены следующие утверждения:
    • Утверждение 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) рекурсивно определяет список, состоящий из среднего геометрического элементов строк матрицы.

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


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

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

15   голосов , оценка 4 из 5
Похожие ответы