Общие элементы двух списков (массивов) - Lisp

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

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

Добрый день Сформировать два массива целых чисел определенной длины. Вывести на печать числа, встречающиеся в каждом массиве. С комментариями пожалуйста

Решение задачи: «Общие элементы двух списков (массивов)»

textual
Листинг программы
(defun inters (a1 a2)
  (cond ((null a1) nil)
        ((member (car a1) a2) (cons (car a1) (inters (cdr a1) a2)))
        (t (inters (cdr a1) a2))))
 
==> inters
(inters '(1 2 3 4 5) '(3 4 5 6 7 8))
 
==> (3 4 5)

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

Функция inters принимает два аргумента - списки a1 и a2. Она возвращает список, содержащий только те элементы, которые присутствуют одновременно в обоих списках. В первой строке кода функция объявлена с помощью defun. В данном случае функция называется inters, а ее аргументы - a1 и a2. Затем следует тело функции, заключенное в скобки. Оно состоит из одной инструкции cond. Условие этой инструкции - это проверка на то, что первый аргумент a1 является null (т.е. пустым списком). Если это условие истинно, то возвращается значение nil. Если условие не выполняется (т.е. a1 не является null), то выполняется проверка на то, является ли первый элемент a1 (который обозначается как (car a1)) элементом списка a2. Если это условие истинно, то (car a1) добавляется в результат (который пока что является пустым списком), а затем функция вызывается рекурсивно для оставшейся части списка a1 и списка a2. Если оба условия не выполняются (т.е. a1 не является null и его первый элемент не является элементом списка a2), то возвращается значение t, что означает, что функция должна продолжить обход списка a1. В конце функция заканчивается, и результатом будет являться итоговый список общих элементов. В приведенном примере функция inters принимает два аргумента: '(1 2 3 4 5) и '(3 4 5 6 7 8). После выполнения функции будет возвращен список (3 4 5), так как только эти элементы присутствуют одновременно в обоих списках.

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


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

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

7   голосов , оценка 3.429 из 5
Похожие ответы