Лисп задание с масивом - Lisp
Формулировка задачи:
Привет всем. У меня вот тут такое задание.
У меня есть 1 функция
В этой функции введенная строка делает reverse и впереди становятся негативные а потом позитивные числа
Мне надо эту функцию переделать в 2 разные функции
У меня есть список с нижними списками
(( 2 -3 4 0 -2)
(-4 0 2)
(-3 3 -4 3) )
И надо создать 2 функции где одна делает reverse по
(defun task (lst &optional (n nil) (np nil)) (cond ((null lst) (append (reverse n) (reverse np))) ((minusp (car lst)) (task (cdr lst) (cons (car lst) n) np)) (t (task (cdr lst) n (cons (car lst) np )))))
КОЛОНАМ
а другая поСТРОКЕ
На выводе должно быть 2 результата. По колонам ((-4 -3 -4 0 -2) (-4 0 4) (2 3 2 3) ) По строке ((-3 -2 2 4 0) (-4 0 2) (-3 -4 3 3) )Решение задачи: «Лисп задание с масивом»
textual
Листинг программы
(defun part-sort (lst &optional (n nil) (np nil)) (cond ((null lst) (append (reverse n) (reverse np))) ((minusp (car lst)) (part-sort (cdr lst) (cons (car lst) n) np)) (t (part-sort (cdr lst) n (cons (car lst) np ))))) (defun by-rows (lst) (mapcar #'part-sort lst)) (defun transp (matr) (apply #'mapcar (cons 'list matr))) (defun by-cols (lst) (transp (by-rows (transp lst)))) (defun print-list (lst) (dolist (x lst t) (princ x) (terpri))) (print-list (by-rows '(( 2 -3 4 0 -2)(-4 0 2)(-3 3 -4 3)))) (print-list (by-cols '(( 2 -3 4 0 -2)(-4 0 2)(-3 3 -4 3))))
Объяснение кода листинга программы
В коде присутствуют следующие названия и значения переменных:
- part-sort — функция, которая сортирует элементы списка lst по возрастанию, используя разделитель -n и упорядочивая элементы np.
- lst — список, который необходимо отсортировать.
- n — разделитель, который используется для сортировки элементов lst.
- np — список, который упорядочивается с помощью функции part-sort.
- by-rows — функция, которая применяет функцию part-sort к каждому элементу списка lst.
- transp — функция, которая транспонирует матрицу, представленную в виде списка списков.
- by-cols — функция, которая применяет функцию transp к каждому столбцу матрицы.
- print-list — функция, которая выводит элементы списка на экран.
- t — символ, который используется в качестве разделителя в списке.
- matr — матрица, которая транспонируется функцией transp.
- x — элемент списка, который выводится на экран функцией print-list.
- -4, 0, 2 - элементы списка, которые используются для тестирования функций by-rows и by-cols.
- -3, 3, -4, 3 - элементы списка, которые используются для тестирования функций by-rows и by-cols.
- 2, -3, 4, 0, -2 - элементы списка, которые используются для тестирования функций by-rows и by-cols.
- -4, 0, 2 - элементы списка, которые используются для тестирования функций by-rows и by-cols.
- -3, 3, -4, 3 - элементы списка, которые используются для тестирования функций by-rows и by-cols.
- 2, -3, 4, 0, -2 - элементы списка, которые используются для тестирования функций by-rows и by-cols.
- -4, 0, 2 - элементы списка, которые используются для тестирования функций by-rows и by-cols.
- -3, 3, -4, 3 - элементы списка, которые используются для тестирования функций by-rows и by-cols.
- 2, -3, 4, 0, -2 - элементы списка, которые используются для тестирования функций by-rows и by-cols. Код реализует алгоритм сортировки элементов списка lst по возрастанию с использованием разделителя -n и упорядочивания элементов np. Функция by-rows применяет функцию part-sort к каждому элементу списка lst, а функция by-cols применяет функцию transp к каждому столбцу матрицы, представленной в виде списка списков.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д