fork download
  1. (defun первый-слог (слово)
  2. "Возвращает первый слог слова (упрощенно, до первой гласной)."
  3. (loop for char across слово
  4. for i from 0
  5. when (member char '(#\а #\у #\о #\ы #\и #\э #\я #\ю #\ё #\е))
  6. do (return (subseq слово 0 (1+ i)))))
  7.  
  8. (defun остаток-слова (слово)
  9. "Возвращает часть слова, идущую после первого слога."
  10. (let ((первый (первый-слог слово)))
  11. (if первый
  12. (subseq слово (length первый))
  13. "")))
  14.  
  15. (defun сплетник-слово (слово ключевое-слово)
  16. "Переводит одно слово на 'язык сплетника'."
  17. (let ((слог-слова (первый-слог слово))
  18. (слог-ключа (первый-слог ключевое-слово))
  19. (остаток-слова (остаток-слова слово))
  20. (остаток-ключа (остаток-слова ключевое-слово)))
  21. (list (concatenate 'string слог-ключа остаток-слова)
  22. (concatenate 'string слог-слова остаток-ключа))))
  23.  
  24. (defun сплетник-предложение (предложение ключевое-слово)
  25. "Переводит предложение на 'язык сплетника'."
  26. (mapcar #'(lambda (слово) (сплетник-слово слово ключевое-слово)) предложение))
  27.  
  28. ;; Пример использования:
  29. (let ((предложение '("слово" "переводится" "на" "язык" "сплетника"))
  30. (ключевое-слово "сплетня"))
  31. (format t "Исходное предложение: ~A~%" предложение)
  32. (format t "Ключевое слово: ~A~%" ключевое-слово)
  33. (format t "Предложение на языке сплетника: ~A~%" (сплетник-предложение предложение ключевое-слово)))
Success #stdin #stdout #stderr 0.02s 9708KB
stdin
Standard input is empty
stdout
Исходное предложение: (слово переводится на язык сплетника)
Ключевое слово: сплетня
Предложение на языке сплетника: 
((сплево слотня) (сплереводится петня) (спле натня) (сплезык ятня)
 (сплетника сплетня))
stderr
Warning: reserving address range 0x80000c0000...0x1fffffffffff that contains memory mappings. clisp might crash later!
Memory dump:
  0x8000000000 - 0x80000bffff
  0x14d7f3c00000 - 0x14d7f3ee4fff
  0x14d7f4000000 - 0x14d7f4002fff
  0x14d7f4003000 - 0x14d7f4201fff
  0x14d7f4202000 - 0x14d7f4202fff
  0x14d7f4203000 - 0x14d7f4203fff
  0x14d7f4215000 - 0x14d7f4239fff
  0x14d7f423a000 - 0x14d7f43acfff
  0x14d7f43ad000 - 0x14d7f43f5fff
  0x14d7f43f6000 - 0x14d7f43f8fff
  0x14d7f43f9000 - 0x14d7f43fbfff
  0x14d7f43fc000 - 0x14d7f43fffff
  0x14d7f4400000 - 0x14d7f4403fff
  0x14d7f4404000 - 0x14d7f4603fff
  0x14d7f4604000 - 0x14d7f4604fff
  0x14d7f4605000 - 0x14d7f4605fff
  0x14d7f4622000 - 0x14d7f4623fff
  0x14d7f4624000 - 0x14d7f4633fff
  0x14d7f4634000 - 0x14d7f4667fff
  0x14d7f4668000 - 0x14d7f479efff
  0x14d7f479f000 - 0x14d7f479ffff
  0x14d7f47a0000 - 0x14d7f47a2fff
  0x14d7f47a3000 - 0x14d7f47a3fff
  0x14d7f47a4000 - 0x14d7f47a5fff
  0x14d7f47a6000 - 0x14d7f47a6fff
  0x14d7f47a7000 - 0x14d7f47a8fff
  0x14d7f47a9000 - 0x14d7f47a9fff
  0x14d7f47aa000 - 0x14d7f47aafff
  0x14d7f47ab000 - 0x14d7f47abfff
  0x14d7f47ac000 - 0x14d7f47b9fff
  0x14d7f47ba000 - 0x14d7f47c7fff
  0x14d7f47c8000 - 0x14d7f47d4fff
  0x14d7f47d5000 - 0x14d7f47d8fff
  0x14d7f47d9000 - 0x14d7f47d9fff
  0x14d7f47da000 - 0x14d7f47dafff
  0x14d7f47db000 - 0x14d7f47e0fff
  0x14d7f47e1000 - 0x14d7f47e2fff
  0x14d7f47e3000 - 0x14d7f47e3fff
  0x14d7f47e4000 - 0x14d7f47e4fff
  0x14d7f47e5000 - 0x14d7f47e5fff
  0x14d7f47e6000 - 0x14d7f4813fff
  0x14d7f4814000 - 0x14d7f4822fff
  0x14d7f4823000 - 0x14d7f48c8fff
  0x14d7f48c9000 - 0x14d7f495ffff
  0x14d7f4960000 - 0x14d7f4960fff
  0x14d7f4961000 - 0x14d7f4961fff
  0x14d7f4962000 - 0x14d7f4975fff
  0x14d7f4976000 - 0x14d7f499dfff
  0x14d7f499e000 - 0x14d7f49a7fff
  0x14d7f49a8000 - 0x14d7f49a9fff
  0x14d7f49aa000 - 0x14d7f49affff
  0x14d7f49b0000 - 0x14d7f49b2fff
  0x14d7f49b5000 - 0x14d7f49b5fff
  0x14d7f49b6000 - 0x14d7f49b6fff
  0x14d7f49b7000 - 0x14d7f49b7fff
  0x14d7f49b8000 - 0x14d7f49b8fff
  0x14d7f49b9000 - 0x14d7f49b9fff
  0x14d7f49ba000 - 0x14d7f49c0fff
  0x14d7f49c1000 - 0x14d7f49c3fff
  0x14d7f49c4000 - 0x14d7f49c4fff
  0x14d7f49c5000 - 0x14d7f49e5fff
  0x14d7f49e6000 - 0x14d7f49edfff
  0x14d7f49ee000 - 0x14d7f49eefff
  0x14d7f49ef000 - 0x14d7f49effff
  0x14d7f49f0000 - 0x14d7f49f0fff
  0x560f6d20e000 - 0x560f6d2fefff
  0x560f6d2ff000 - 0x560f6d408fff
  0x560f6d409000 - 0x560f6d468fff
  0x560f6d46a000 - 0x560f6d498fff
  0x560f6d499000 - 0x560f6d4c9fff
  0x560f6d4ca000 - 0x560f6d4cdfff
  0x560f6dbef000 - 0x560f6dc0ffff
  0x7ffdda74a000 - 0x7ffdda76afff
  0x7ffdda77c000 - 0x7ffdda77ffff
  0x7ffdda780000 - 0x7ffdda781fff