Смежное число в списке с подсписками - Lisp

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

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

Добрый день. Интересует способ реализации следующей задачи: есть функция в двумя аргументами. Первый - это список с подсписками, а второй - это простое число. Нужно проверить, в каких подсписках есть это чисто и вывести второе чисто из этого подсписка. Например, есть функция:
Листинг программы
  1. ( find_neighbours '((1 2) (3 1) (4 5) (9 1) (2 3) (1 5)) 1 )
где - список с подсписками
Листинг программы
  1. '((1 2) (3 1) (4 5) (9 1) (2 3) (1 5))
- искомое число
Листинг программы
  1. 1
Функция должна вернуть
Листинг программы
  1. (2 3 9 5)
так как у нас есть подспики, в которых присутствует число 1
Листинг программы
  1. ( (1 2) (3 1) (9 1) (1 5) )
Заранее большое спасибо.

Решение задачи: «Смежное число в списке с подсписками»

textual
Листинг программы
  1. (defun task (lst p)
  2.   (remove p (apply 'append (remove-if-not (lambda (x) (member p x)) lst))))
  3.  
  4. ==> task
  5.  
  6. (task '((1 2) (3 1) (4 5) (9 1) (2 3) (1 5)) 1 )
  7.  
  8. ==> (2 3 9 5)

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

В данном коде определён функционал для решения поставленной задачи.

  1. В первой строке кода определена функция с именем task.
  2. Вторая строка кода удаляет указанный элемент из списка.
  3. Третья строка кода добавляет все элементы списка, которые не содержат указанный элемент, в новый список.
  4. В четвёртой строке кода применяется функция apply к списку, который был получен на предыдущем шаге, с целью объединения всех его элементов в один список.
  5. В пятой строке кода используется функция remove-if-not для удаления всех элементов из списка, которые не содержат указанный элемент.
  6. Шестая строка кода использует функцию member для проверки наличия указанного элемента в каждом элементе списка.
  7. В седьмой строке кода определён список, который будет использоваться в качестве входных данных для функции task.
  8. В восьмой строке кода вызывается функция task с указанным списком и указанным элементом в качестве аргументов.
  9. В девятой строке кода выводится результат выполнения функции task.

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


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

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

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

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

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

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