Вывести список успевающих студентов,проживающих в городе. - Lisp
Формулировка задачи:
Вывести список успевающих студентов,проживающих в городе.
Решение задачи: «Вывести список успевающих студентов,проживающих в городе.»
textual
Листинг программы
CL-USER> (setf list '((Иванов 2 Город) (Петров 4 Область) (Сидоров 5 Город))) ((ИВАНОВ 2 ГОРОД) (ПЕТРОВ 4 ОБЛАСТЬ) (СИДОРОВ 5 ГОРОД)) CL-USER> (defun f (place mark list) (remove-if-not #'(lambda (y) (and (>= (car y) mark) (string-equal place (cadr y)))) list :key #'cdr)) F CL-USER> (f 'Город 4 list) ((СИДОРОВ 5 ГОРОД)) CL-USER> (f 'Область 4 list) ((ПЕТРОВ 4 ОБЛАСТЬ))
Объяснение кода листинга программы
- Сначала мы устанавливаем значение переменной
list
, которая является списком. - Затем мы определяем функцию
f
, которая принимает три аргумента:place
,mark
иlist
. - Внутри функции
f
мы используем функциюremove-if-not
, чтобы отфильтровать списокlist
. Мы передаем вremove-if-not
лямбда-функцию, которая проверяет, что первый элемент каждого элемента спискаy
больше или равенmark
и что второй элемент спискаy
равенplace
. - Мы также передаем
:key
и#'cdr
вremove-if-not
, чтобы указать, что мы хотим отфильтровать список по второму элементу каждого элемента. - Наконец, мы вызываем функцию
f
с аргументами'Город 4'
иlist
, и она возвращает отфильтрованный список.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д