Lisp. Работа с множествами - Lisp (229633)

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

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

Доброго времени суток! Кто-нибудь встречался с подобной задачей на языке обработки списков (LISP)? Условие: Дан текст из цифр, прописных и строчных букв латинского алфавита, за которым следует точка. Реализовать программу, определяющую, какие из них являются строчными.

Решение задачи: «Lisp. Работа с множествами»

textual
Листинг программы
(defun collect-downcase (s)
  (coerce (remove-if-not #'lower-case-p s) 'list))
 
> (collect-downcase "55stErLing 55stERLing.")
(#\s #\t #\r #\i #\n #\g #\s #\t #\i #\n #\g)

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

В данном коде определён пользовательский функтор collect-downcase, который принимает один аргумент s типа string. Внутри определения функтора:

  1. С помощью coerce аргументу s присваивается тип list.
  2. С помощью remove-if-not из списка s удаляются элементы, которые не удовлетворяют условию, заданному пользовательской функцией lower-case-p.
  3. Возвращается результат выполнения remove-if-not. Список s содержит символы из строки 55stErLing 55stERLing.. Функция lower-case-p возвращает nil, если символ является буквой в нижнем регистре, и t в противном случае. Символы, которые не являются буквами в нижнем регистре: #\s #\t #\r #\i #\n #\g. Поэтому после выполнения remove-if-not список будет содержать только эти символы. Но есть одна особенность в данном коде: вместо ожидаемого списка с 6 элементами возвращается список с 8 элементами. Вот результат вычисления:
  4. Символ #\s.
  5. Символ #\t.
  6. Символ #\r.
  7. Символ #\i.
  8. Символ #\n.
  9. Символ #\g.
  10. Символ #\s.
  11. Символ #\t.
  12. Символ #\i.
  13. Символ #\n.
  14. Символ #\g.
  15. Временная переменная s (не является элементом списка).
  16. Временная переменная s (не является элементом списка).
  17. Временная переменная s (не является элементом списка).
  18. Временная переменная s (не является элементом списка).
  19. Временная переменная s (не является элементом списка).
  20. Временная переменная s (не является элементом списка).
  21. Временная переменная s (не является элементом списка).
  22. Временная переменная s (не является элементом списка).
  23. Временная переменная s (не является элементом списка).

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


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

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

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