fork download
  1. ;; Функция для проверки, начинается ли слово с заглавной буквы.
  2. (defun starts-with-uppercase (word)
  3. (cond
  4. ((not (stringp word)) nil) ; Обработка не строкового аргумента
  5. ((zerop (length word)) nil) ; Обработка пустой строки
  6. (t (upper-case-p (char word 0))))) ; Проверка первого символа
  7.  
  8. ;; Преобразует слово в верхний регистр, если оно начинается с заглавной буквы;
  9. ;; иначе возвращает исходное слово.
  10. (defun uppercase-if-uppercase (word)
  11. (if (starts-with-uppercase word)
  12. (string-upcase word)
  13. word))
  14.  
  15. ;; Обрабатывает одно предложение (список слов). Применяет uppercase-if-uppercase к каждому слову.
  16. (defun process-sentence (sentence)
  17. (mapcar #'uppercase-if-uppercase sentence))
  18.  
  19. ;; Обрабатывает весь текст (список предложений). Применяет process-sentence к каждому предложению.
  20. (defun process-text (text)
  21. (mapcar #'process-sentence text))
  22.  
  23. ;; Примеры использования
  24. (let ((text '(("this" "is" "A" "sample" "text")
  25. ("Some" "words" "are" "Capitalized" "text"))))
  26.  
  27. (format t "Исходный текст:~%~A~%" text)
  28. (format t "Обработанный текст:~%~A~%" (process-text text))
  29.  
  30. (format t "~%Дополнительные примеры:~%")
  31. (format t "Предложение: ~A, Обработано: ~A~%" '("hello" "World") (process-sentence '("hello" "World")))
  32. (format t "Предложение: ~A, Обработано: ~A~%" '("Hello" "World") (process-sentence '("Hello" "World")))
  33. (format t "Текст: ~A, Обработано: ~A~%" '(("Hello" "world")) (process-text '(("Hello" "world"))))
  34. (format t "Текст: ~A, Обработано: ~A~%" '(("hello" "World")) (process-text '(("hello" "World"))))
  35. (format t "Текст (с числами): ~A, Обработано: ~A~%" '(("Hello" "123World")) (process-text '(("Hello" "123World"))))
  36. (format t "Текст (пустое предложение): ~A, Обработано: ~A~%" '(("")) (process-text '((""))))
  37. )
Success #stdin #stdout #stderr 0.02s 9496KB
stdin
Standard input is empty
stdout
Исходный текст:
((this is A sample text) (Some words are Capitalized text))
Обработанный текст:
((this is A sample text) (SOME words are CAPITALIZED text))

Дополнительные примеры:
Предложение: (hello World), Обработано: (hello WORLD)
Предложение: (Hello World), Обработано: (HELLO WORLD)
Текст: ((Hello world)), Обработано: ((HELLO world))
Текст: ((hello World)), Обработано: ((hello WORLD))
Текст (с числами): ((Hello 123World)), Обработано: ((HELLO 123World))
Текст (пустое предложение): (()), Обработано: (())
stderr
Warning: reserving address range 0x80000c0000...0x1fffffffffff that contains memory mappings. clisp might crash later!
Memory dump:
  0x8000000000 - 0x80000bffff
  0x152c1a800000 - 0x152c1aae4fff
  0x152c1ac00000 - 0x152c1ac02fff
  0x152c1ac03000 - 0x152c1ae01fff
  0x152c1ae02000 - 0x152c1ae02fff
  0x152c1ae03000 - 0x152c1ae03fff
  0x152c1ae15000 - 0x152c1ae39fff
  0x152c1ae3a000 - 0x152c1afacfff
  0x152c1afad000 - 0x152c1aff5fff
  0x152c1aff6000 - 0x152c1aff8fff
  0x152c1aff9000 - 0x152c1affbfff
  0x152c1affc000 - 0x152c1affffff
  0x152c1b000000 - 0x152c1b003fff
  0x152c1b004000 - 0x152c1b203fff
  0x152c1b204000 - 0x152c1b204fff
  0x152c1b205000 - 0x152c1b205fff
  0x152c1b238000 - 0x152c1b239fff
  0x152c1b23a000 - 0x152c1b249fff
  0x152c1b24a000 - 0x152c1b27dfff
  0x152c1b27e000 - 0x152c1b3b4fff
  0x152c1b3b5000 - 0x152c1b3b5fff
  0x152c1b3b6000 - 0x152c1b3b8fff
  0x152c1b3b9000 - 0x152c1b3b9fff
  0x152c1b3ba000 - 0x152c1b3bbfff
  0x152c1b3bc000 - 0x152c1b3bcfff
  0x152c1b3bd000 - 0x152c1b3befff
  0x152c1b3bf000 - 0x152c1b3bffff
  0x152c1b3c0000 - 0x152c1b3c0fff
  0x152c1b3c1000 - 0x152c1b3c1fff
  0x152c1b3c2000 - 0x152c1b3cffff
  0x152c1b3d0000 - 0x152c1b3ddfff
  0x152c1b3de000 - 0x152c1b3eafff
  0x152c1b3eb000 - 0x152c1b3eefff
  0x152c1b3ef000 - 0x152c1b3effff
  0x152c1b3f0000 - 0x152c1b3f0fff
  0x152c1b3f1000 - 0x152c1b3f6fff
  0x152c1b3f7000 - 0x152c1b3f8fff
  0x152c1b3f9000 - 0x152c1b3f9fff
  0x152c1b3fa000 - 0x152c1b3fafff
  0x152c1b3fb000 - 0x152c1b3fbfff
  0x152c1b3fc000 - 0x152c1b429fff
  0x152c1b42a000 - 0x152c1b438fff
  0x152c1b439000 - 0x152c1b4defff
  0x152c1b4df000 - 0x152c1b575fff
  0x152c1b576000 - 0x152c1b576fff
  0x152c1b577000 - 0x152c1b577fff
  0x152c1b578000 - 0x152c1b58bfff
  0x152c1b58c000 - 0x152c1b5b3fff
  0x152c1b5b4000 - 0x152c1b5bdfff
  0x152c1b5be000 - 0x152c1b5bffff
  0x152c1b5c0000 - 0x152c1b5c5fff
  0x152c1b5c6000 - 0x152c1b5c8fff
  0x152c1b5cb000 - 0x152c1b5cbfff
  0x152c1b5cc000 - 0x152c1b5ccfff
  0x152c1b5cd000 - 0x152c1b5cdfff
  0x152c1b5ce000 - 0x152c1b5cefff
  0x152c1b5cf000 - 0x152c1b5cffff
  0x152c1b5d0000 - 0x152c1b5d6fff
  0x152c1b5d7000 - 0x152c1b5d9fff
  0x152c1b5da000 - 0x152c1b5dafff
  0x152c1b5db000 - 0x152c1b5fbfff
  0x152c1b5fc000 - 0x152c1b603fff
  0x152c1b604000 - 0x152c1b604fff
  0x152c1b605000 - 0x152c1b605fff
  0x152c1b606000 - 0x152c1b606fff
  0x562ca8827000 - 0x562ca8917fff
  0x562ca8918000 - 0x562ca8a21fff
  0x562ca8a22000 - 0x562ca8a81fff
  0x562ca8a83000 - 0x562ca8ab1fff
  0x562ca8ab2000 - 0x562ca8ae2fff
  0x562ca8ae3000 - 0x562ca8ae6fff
  0x562ca9416000 - 0x562ca9436fff
  0x7ffef1733000 - 0x7ffef1753fff
  0x7ffef17c5000 - 0x7ffef17c8fff
  0x7ffef17c9000 - 0x7ffef17cafff