Для заданной матрицы В размера 5*5 найти такие k, для которых k-я строка матрицы совпадает с k-м столбцом - Lisp

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

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

Для заданной матрицы В размера 5*5 найти такие k, для которых k-я строка матрицы совпадает с k-м столбцом.

Решение задачи: «Для заданной матрицы В размера 5*5 найти такие k, для которых k-я строка матрицы совпадает с k-м столбцом»

textual
Листинг программы
  1. (defun task (matr)
  2.   (let ((matrt (apply 'mapcar (cons 'list matr)))
  3.         (res nil)
  4.         (n   (length matr)))
  5.    (dotimes (i n res)
  6.      (dotimes (j n nil)
  7.        (when (equal (nth i matr) (nth j matrt)) (push (list i j) res))))))
  8.    
  9. ==> task
  10.  
  11. (task '((1 2 3 4) (2 6 5 8) (3 10 11 12) (4 14 15 16)))
  12.  
  13. ==> ((0 0))
  14.  
  15. (task '((0 0 0 0) (2 6 0 8) (3 10 0 12) (4 14 0 16)))
  16.  
  17. ==> ((0 2))

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

В коде определена функция task, которая принимает в качестве аргумента матрицу matr. Внутри функции создаются следующие переменные: — matrt — результат применения функции mapcar к матрице matr, в которой каждый элемент матрицы преобразуется в список из одного элемента; — res — результат итерации по матрице matrt; — n — количество строк матрицы matr. Далее выполняется два вложенных цикла: — внешний цикл dotimes с переменной i от 0 до n, который выполняет следующие действия: — внутренний цикл dotimes с переменной j от 0 до n, который ищет совпадения элементов строк и столбцов матрицы matr и matrt соответственно; — если найдено совпадение, то в переменную res добавляется список с номерами i и j. В конце выполнения функции task возвращается список res. Пример выполнения функции task для матрицы '((1 2 3 4) (2 6 5 8) (3 10 11 12) (4 14 15 16)) покажет, что совпадения найдены для строк 0 и 2, то есть будет возвращён список ((0 2)). Пример выполнения функции task для матрицы '((0 0 0 0) (2 6 0 8) (3 10 0 12) (4 14 0 16)) покажет, что совпадения найдены для строки 0, то есть будет возвращён список ((0 0)).

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


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

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

14   голосов , оценка 4.071 из 5

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

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

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