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
. Внутри определения функтора:
- С помощью
coerce
аргументуs
присваивается типlist
. - С помощью
remove-if-not
из спискаs
удаляются элементы, которые не удовлетворяют условию, заданному пользовательской функциейlower-case-p
. - Возвращается результат выполнения
remove-if-not
. Списокs
содержит символы из строки55stErLing 55stERLing.
. Функцияlower-case-p
возвращаетnil
, если символ является буквой в нижнем регистре, иt
в противном случае. Символы, которые не являются буквами в нижнем регистре: #\s #\t #\r #\i #\n #\g. Поэтому после выполненияremove-if-not
список будет содержать только эти символы. Но есть одна особенность в данном коде: вместо ожидаемого списка с 6 элементами возвращается список с 8 элементами. Вот результат вычисления: - Символ #\s.
- Символ #\t.
- Символ #\r.
- Символ #\i.
- Символ #\n.
- Символ #\g.
- Символ #\s.
- Символ #\t.
- Символ #\i.
- Символ #\n.
- Символ #\g.
- Временная переменная
s
(не является элементом списка). - Временная переменная
s
(не является элементом списка). - Временная переменная
s
(не является элементом списка). - Временная переменная
s
(не является элементом списка). - Временная переменная
s
(не является элементом списка). - Временная переменная
s
(не является элементом списка). - Временная переменная
s
(не является элементом списка). - Временная переменная
s
(не является элементом списка). - Временная переменная
s
(не является элементом списка).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д