fork download
  1. ;; Функция для проверки, начинается ли слово с заглавной буквы.
  2. (defun starts-with-uppercase (word)
  3. (and (stringp word) ; Проверка, является ли аргумент строкой.
  4. (plusp (length word)) ; Проверка, что строка не пустая.
  5. (upper-case-p (char word 0)))) ; Проверка первого символа на верхний регистр
  6.  
  7. ;; Преобразует слово в верхний регистр, если оно начинается с заглавной буквы;
  8. ;; иначе возвращает исходное слово.
  9. (defun uppercase-if-uppercase (word)
  10. (if (starts-with-uppercase word)
  11. (string-upcase word)
  12. word))
  13.  
  14. ;; Обрабатывает одно предложение (список слов). Применяет uppercase-if-uppercase к каждому слову.
  15. (defun process-sentence (sentence)
  16. (mapcar #'uppercase-if-uppercase sentence))
  17.  
  18. ;; Обрабатывает весь текст (список предложений). Применяет process-sentence к каждому предложению.
  19. (defun process-text (text)
  20. (mapcar #'process-sentence text))
  21.  
  22.  
  23. ;; Функция для тестирования
  24. (defun test-process-text (text)
  25. (format t "Исходный текст:~%~S~%Обработанный текст:~%~S~%~%" text (process-text text)))
  26.  
  27. ;; Примеры использования
  28.  
  29. (let ()
  30. (format t "Примеры использования:~%~%")
  31.  
  32. (test-process-text '(("this" "is" "A" "sample" "text")
  33. ("Some" "words" "are" "Capitalized" "text")))
  34.  
  35.  
  36. (test-process-text '(("Hello" "world")))
  37.  
  38. (test-process-text '(("hello" "World")))
  39.  
  40. (test-process-text '(("Hello" "123World")))
  41.  
  42. (test-process-text '(("Hello" "World" "and" "New" "York")))
  43.  
  44. (test-process-text '(("The" "End")))
  45.  
  46. (test-process-text '(("Empty" "" "string"))) ; Пример с пустой строкой
  47.  
  48. (test-process-text '(("Special" "characters!" "Like" "АБВ"))) ; Пример со специальными символами и кириллицей
  49.  
  50. (test-process-text '(("Multiple" "Sentences." "Each" "With" "Capitalized" "Words.")))
  51.  
  52. )
  53.  
Success #stdin #stdout #stderr 0.02s 9532KB
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" "123World"))
Обработанный текст:
(("HELLO" "123World"))

Исходный текст:
(("Hello" "World" "and" "New" "York"))
Обработанный текст:
(("HELLO" "WORLD" "and" "NEW" "YORK"))

Исходный текст:
(("The" "End"))
Обработанный текст:
(("THE" "END"))

Исходный текст:
(("Empty" "" "string"))
Обработанный текст:
(("EMPTY" "" "string"))

Исходный текст:
(("Special" "characters!" "Like" "АБВ"))
Обработанный текст:
(("SPECIAL" "characters!" "LIKE" "АБВ"))

Исходный текст:
(("Multiple" "Sentences." "Each" "With" "Capitalized" "Words."))
Обработанный текст:
(("MULTIPLE" "SENTENCES." "EACH" "WITH" "CAPITALIZED" "WORDS."))

stderr
Warning: reserving address range 0x80000c0000...0x1fffffffffff that contains memory mappings. clisp might crash later!
Memory dump:
  0x8000000000 - 0x80000bffff
  0x15370ee00000 - 0x15370f0e4fff
  0x15370f215000 - 0x15370f239fff
  0x15370f23a000 - 0x15370f3acfff
  0x15370f3ad000 - 0x15370f3f5fff
  0x15370f3f6000 - 0x15370f3f8fff
  0x15370f3f9000 - 0x15370f3fbfff
  0x15370f3fc000 - 0x15370f3fffff
  0x15370f400000 - 0x15370f402fff
  0x15370f403000 - 0x15370f601fff
  0x15370f602000 - 0x15370f602fff
  0x15370f603000 - 0x15370f603fff
  0x15370f680000 - 0x15370f68ffff
  0x15370f690000 - 0x15370f6c3fff
  0x15370f6c4000 - 0x15370f7fafff
  0x15370f7fb000 - 0x15370f7fbfff
  0x15370f7fc000 - 0x15370f7fefff
  0x15370f7ff000 - 0x15370f7fffff
  0x15370f800000 - 0x15370f803fff
  0x15370f804000 - 0x15370fa03fff
  0x15370fa04000 - 0x15370fa04fff
  0x15370fa05000 - 0x15370fa05fff
  0x15370fb5c000 - 0x15370fb5ffff
  0x15370fb60000 - 0x15370fb60fff
  0x15370fb61000 - 0x15370fb62fff
  0x15370fb63000 - 0x15370fb63fff
  0x15370fb64000 - 0x15370fb64fff
  0x15370fb65000 - 0x15370fb65fff
  0x15370fb66000 - 0x15370fb73fff
  0x15370fb74000 - 0x15370fb81fff
  0x15370fb82000 - 0x15370fb8efff
  0x15370fb8f000 - 0x15370fb92fff
  0x15370fb93000 - 0x15370fb93fff
  0x15370fb94000 - 0x15370fb94fff
  0x15370fb95000 - 0x15370fb9afff
  0x15370fb9b000 - 0x15370fb9cfff
  0x15370fb9d000 - 0x15370fb9dfff
  0x15370fb9e000 - 0x15370fb9efff
  0x15370fb9f000 - 0x15370fb9ffff
  0x15370fba0000 - 0x15370fbcdfff
  0x15370fbce000 - 0x15370fbdcfff
  0x15370fbdd000 - 0x15370fc82fff
  0x15370fc83000 - 0x15370fd19fff
  0x15370fd1a000 - 0x15370fd1afff
  0x15370fd1b000 - 0x15370fd1bfff
  0x15370fd1c000 - 0x15370fd2ffff
  0x15370fd30000 - 0x15370fd57fff
  0x15370fd58000 - 0x15370fd61fff
  0x15370fd62000 - 0x15370fd63fff
  0x15370fd64000 - 0x15370fd69fff
  0x15370fd6a000 - 0x15370fd6cfff
  0x15370fd6f000 - 0x15370fd6ffff
  0x15370fd70000 - 0x15370fd70fff
  0x15370fd71000 - 0x15370fd71fff
  0x15370fd72000 - 0x15370fd72fff
  0x15370fd73000 - 0x15370fd73fff
  0x15370fd74000 - 0x15370fd7afff
  0x15370fd7b000 - 0x15370fd7dfff
  0x15370fd7e000 - 0x15370fd7efff
  0x15370fd7f000 - 0x15370fd9ffff
  0x15370fda0000 - 0x15370fda7fff
  0x15370fda8000 - 0x15370fda8fff
  0x15370fda9000 - 0x15370fda9fff
  0x15370fdaa000 - 0x15370fdaafff
  0x55f7f78b1000 - 0x55f7f79a1fff
  0x55f7f79a2000 - 0x55f7f7aabfff
  0x55f7f7aac000 - 0x55f7f7b0bfff
  0x55f7f7b0d000 - 0x55f7f7b3bfff
  0x55f7f7b3c000 - 0x55f7f7b6cfff
  0x55f7f7b6d000 - 0x55f7f7b70fff
  0x55f7f7bc0000 - 0x55f7f7be0fff
  0x7fff9e3af000 - 0x7fff9e3cffff
  0x7fff9e3e1000 - 0x7fff9e3e4fff
  0x7fff9e3e5000 - 0x7fff9e3e6fff