Определить, сколько его элементов отличны от последнего - Lisp
Формулировка задачи:
1. Дан список. Определить, сколько его элементов отличны от последнего.
Решение задачи: «Определить, сколько его элементов отличны от последнего»
textual
Листинг программы
(defun task (lst) (let ((last (car (last lst)))) (length (remove-if (lambda (x) (= x last)) (butlast lst))))) ==> task (task '(1 2 3 1 2 3 2)) ==> 4
Объяснение кода листинга программы
В коде определена функция task, которая принимает в качестве аргумента список lst. Внутри функции создается переменная last, которая содержит последний элемент списка lst.
Далее, с помощью функции remove-if и лямбда-функции, из списка lst удаляются все элементы, равные последнему элементу last.
Затем, с помощью функции length определяется количество оставшихся элементов в списке.
Наконец, результат вычислений возвращается из функции.
При вызове функции task с аргументом '(1 2 3 1 2 3 2)' будет возвращено число 4, так как после удаления повторяющихся элементов в списке останется 4 элемента.