Реализация функции last - Lisp
Формулировка задачи:
Нужно вручную написать функцию last, и вот эти 2 списка из согласных нужно положить в локальную переменную, помоги пожалуйста
(defun ending (w) (cond ((and (member (car (last w 2)) '( b c d f g h j k l m n p q r s t v w x y z)) (eql (car (last w)) 'y)) (our-nconc (butlast w) '(i e s))) ((and (member (car (last w 2)) '( b c d f g h j k l m n p q r s t v w x y z)) (eql (car (last w)) 'o)) (our-nconc w '(e s))) (t (our-nconc w '(s))))) (defun our-nconc (x y) (cond ((null x) y) (t (cons (car x) (our-nconc (cdr x) y)))))
Решение задачи: «Реализация функции last»
textual
Листинг программы
(defun our-last (lst &optional (n 1)) ; объявление ф-ии our-last c обязательным парметром lst, и ; необязательным парметром n (по умолчанию равен 1) (let* ((len (length lst)) ; объявление локальных переменных: len - длина заданного списка lst, и (delta (- len n))) ; delta - сколько элементов списка lst нужно пропустить, чтобы ; вернуть оставшиеся элементы списка (if (< delta 0) ; если n больше чем элементов в списке len, то delta будет отрицательным. lst ; в этом случае возвращается список целиком (согласно справочнику) (nthcdr delta lst)))) ; в противном случае вернуть указатель на оставшиеся элементы списка let* (let со звездочкой) потому, что вычисление delta зависит от len.
Объяснение кода листинга программы
В данном коде реализована функция our-last
, которая принимает два параметра: lst и n.
- (defun our-last (lst &optional (n 1)) — объявление функции our-last с обязательным аргументом lst и необязательным аргументом n, значение которого по умолчанию равно 1.
- (let* ((len (length lst)) — создание локальной переменной len, которая содержит длину списка lst.
- (delta (- len n)) — создание локальной переменной delta, которая содержит разницу между длиной списка lst и значением аргумента n. Если n больше, чем количество элементов в списке lst, то delta будет отрицательной.
- (if (< delta 0) — проверка условия: если delta меньше нуля, то это означает, что значение аргумента n больше, чем количество элементов в списке lst.
- lst — возврат списка целиком в случае, если условие в предыдущем шаге истинно.
- (nthcdr delta lst) — возврат указателя на оставшиеся элементы списка, начиная с позиции, следующей за последней позицией, соответствующей аргументу n. Таким образом, если передать функции our-last список из 5 элементов и аргумент n, равный 3, то функция вернет список, содержащий только два элемента: четвертый и пятый элементы исходного списка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д