Вывести список успевающих студентов,проживающих в городе. - 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 ОБЛАСТЬ))

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

  1. Сначала мы устанавливаем значение переменной list, которая является списком.
  2. Затем мы определяем функцию f, которая принимает три аргумента: place, mark и list.
  3. Внутри функции f мы используем функцию remove-if-not, чтобы отфильтровать список list. Мы передаем в remove-if-not лямбда-функцию, которая проверяет, что первый элемент каждого элемента списка y больше или равен mark и что второй элемент списка y равен place.
  4. Мы также передаем :key и #'cdr в remove-if-not, чтобы указать, что мы хотим отфильтровать список по второму элементу каждого элемента.
  5. Наконец, мы вызываем функцию f с аргументами 'Город 4' и list, и она возвращает отфильтрованный список.

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


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

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

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