Подсчитать произведение ненулевых элементов каждой строки прямоугольной матрицы - Prolog
Формулировка задачи:
Задана прямоугольная числовая матрица. Подсчитать произведение ее ненулевых элементов в каждой строке.
Решение задачи: «Подсчитать произведение ненулевых элементов каждой строки прямоугольной матрицы»
textual
Листинг программы
prod_mat([],[]). prod_mat([H|T],[PL|T1]):-prod_list(H,PL), prod_mat(T,T1). prod_list([],1). prod_mat([0|T],P):-prod_list(T,P). prod_mat([A|T],P):-prod_list(T,P1), P=A*P1.%или P is A*P1
Объяснение кода листинга программы
Код решает задачу подсчёта произведения ненулевых элементов каждой строки прямоугольной матрицы. Список действий в коде:
- prod_mat([],[]). - базовый случай, когда первая аргумент пуст, то есть не содержит ни одного элемента. Результат работы этого случая - пустая строка.
- prod_mat([H|T],[PL|T1]):-prod_list(H,PL), - рекурсивный случай, когда первый аргумент не пуст. Рекурсивно вызывается prod_mat для обработки оставшейся части строки.
- prod_list([],1). - базовый случай, когда второй аргумент пуст, то есть не содержит ни одного элемента. Результат работы этого случая - 1 (единица).
- prod_mat([0|T],P):-prod_list(T,P). - рекурсивный случай, когда в строке есть ноль. Результат работы этого случая - произведение элементов строки до нуля.
- prod_mat([A|T],P):-prod_list(T,P1), P=A*P1. - рекурсивный случай, когда в строке нет нуля. Результат работы этого случая - произведение текущего элемента на произведение элементов строки до него.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д