Создайте предикат, находящий список, состоящий из среднего геметрического элементов строк матрицы - Prolog

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

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

Ребята. Вот задание: Создайте предикат, находящей список, состоящий из среднегеометрического элементов строк матрицы, представленной многоуровневым списком. Уже всю голову сломал. SWI Prolog
И вторая: Создайте предикат, находящий в исходной строке слова, начинающиеся с буквы f.
Ребята помогите пожалуйста

Решение задачи: «Создайте предикат, находящий список, состоящий из среднего геметрического элементов строк матрицы»

textual
Листинг программы
  1. domains
  2. rl=real*
  3. matr=rl*
  4.  
  5. predicates
  6. pow(real,real,real)
  7. len(rl,real)
  8. product(rl,real)
  9. sgeom(rl,real)
  10. task(matr,rl)
  11.  
  12. clauses
  13. pow(X,Y,Z) :- Z=exp(Y*ln(X)).
  14.  
  15. len([],0.0).
  16. len([_|T],L) :- len(T,L1), L=L1+1.0.
  17.  
  18. product([],1.0).
  19. product([X|T],R) :- product(T,R1), R=R1*X.
  20.  
  21. sgeom(X,R) :- product(X,P), len(X,L), Q=1.0/L, pow(P,Q,R).
  22.  
  23. task([],[]).
  24. 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

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

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

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