Функция поиска в а-списке L точечной пары, соответствующей ключу k - Lisp

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

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

Напишите функцию от двух аргументов (аналог встроенной функции assoc(l, k)), которая в а-списке l ищет точечную пару, соответствующую ключу k.

Решение задачи: «Функция поиска в а-списке L точечной пары, соответствующей ключу k»

textual
Листинг программы
  1. (defun task (lst k)
  2.  (car (remove-if (lambda (x) (not (equal k (car x)))) lst)))
  3.  
  4. ==> task
  5.  
  6. (task '((a . 1) (b . 2) (c . 3)) 'b)
  7.  
  8. ==> (b . 2)
  9.  
  10. (task '((a . 1) (b . 2) (c . 3)) 'd)
  11.  
  12. ==> NIL

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

В коде определена функция поиска в а-списке L точечной пары, соответствующей ключу k. Функция remove-if удаляет из списка все элементы, удовлетворяющие заданному условию (x) — это значение элемента списка, а (not (equal k (car x)))) — это условие, которое возвращает истину, если значение первого элемента в списке не равно ключу k. Функция car возвращает первый элемент из списка. В итоге, функция task возвращает найденную точечную пару, соответствующую ключу k, или NIL, если такая пара не найдена. В данном примере, функция task вызывается с аргументами '((a . 1) (b . 2) (c . 3)) и 'b. По условию задачи, нужно найти точечную пару, соответствующую ключу 'b'. Первый элемент в списке — 'a', не соответствует ключу 'b', поэтому он будет удален из списка. Второй элемент в списке — 'b', соответствует ключу 'b', и является искомым значением. Третий элемент в списке — 'c', не соответствует ключу 'b', поэтому он также будет удален из списка. В итоге, функция task вернет найденную точечную пару 'b'. Во втором примере, функция task вызывается с аргументами '((a . 1) (b . 2) (c . 3)) и 'd'. По условию задачи, нужно найти точечную пару, соответствующую ключу 'd'. Но в списке нет элементов, которые бы соответствовали ключу 'd', поэтому функция task вернет NIL.

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


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

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

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

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

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

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