Основные конструкции языка. Ветвления. Циклы - Lisp

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

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

2. Слова в предложении разделены пробелами. Упорядочить слова в соответствии с ростом их длины. 3. Определить в заданной строке количество знаков арифметических действий (+, -, и т.д.).

Решение задачи: «Основные конструкции языка. Ветвления. Циклы»

textual
Листинг программы
  1. (defun task-1 (txt)
  2.  (let* ((ws (strWords txt))
  3.         (wl (mapcar (lambda (w) (list (strLen w) w)) ws))
  4.         (ss (mapcar 'cadr (qsort-a wl 'car)))
  5.         (r ""))
  6.    (iter (for w in ss) (setq r (strCat r w " "))) r))
  7.  
  8. ==> TASK-1
  9.  
  10. (task-1 "a abc ab")
  11.  
  12. ==> "a ab abc "
  13.  
  14. (defun task-2 (txt)
  15.  (let ((c 0))
  16.    (iter (for a in-string txt)
  17.      (when (member a '("+" "-" "*" "/")) (counting 1 into c))) c))
  18.  
  19. ==> TASK-2
  20.  
  21. (task-2 "a+ b- c* d/")
  22.  
  23. ==> 4

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

  1. В функции task-1 текст разделяется на слова, образующие список ws.
  2. Каждое слово из списка ws обрабатывается с помощью mapcar. Функция strLen вычисляет длину слова, а cadr возвращает пару из списка, состоящую из длины слова и самого слова.
  3. Затем, список wl сортируется по первому элементу каждой пары с помощью qsort-a.
  4. Результатом сортировки является новый список ss, состоящий из вторых элементов пар.
  5. Итерация по списку ss с помощью iter позволяет сконкатенировать строку r с каждым элементом списка ss, добавляя между ними пробел.
  6. В функции task-2 итерация по тексту txt происходит с помощью iter.
  7. Если символ a является одним из значений, указанных в списке +--*/, счетчик c увеличивается на 1.
  8. В конце функции возвращается значение c, которое является количеством указанных символов в тексте.

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы