(defun vowel-p (char)
(member char '(#\a #\e #\i #\o #\u) :test #'char=))
(defun split-word (word)
(let ((chars (coerce word 'list))
(syllables nil)
(current nil))
(dolist (ch chars)
(push ch current)
(when (vowel-p ch)
(push (coerce (reverse current) 'string) syllables)
(setf current nil)))
(when current
(if syllables
(setf (car syllables)
(concatenate 'string (car syllables)
(coerce (reverse current) 'string)))
(push (coerce (reverse current) 'string) syllables)))
(reverse syllables)))
(defun split-string (str)
(let ((words nil) (current nil))
(dotimes (i (length str))
(let ((ch (char str i)))
(if (char= ch #\Space)
(when current
(push (coerce (reverse current) 'string) words)
(setf current nil))
(push ch current))))
(when current
(push (coerce (reverse current) 'string) words))
(reverse words)))
(defun split-phrase (phrase)
(mapcar #'split-word (split-string phrase)))
(print (split-phrase "hello world"))
KGRlZnVuIHZvd2VsLXAgKGNoYXIpCiAgKG1lbWJlciBjaGFyICcoI1xhICNcZSAjXGkgI1xvICNcdSkgOnRlc3QgIydjaGFyPSkpCgooZGVmdW4gc3BsaXQtd29yZCAod29yZCkKICAobGV0ICgoY2hhcnMgKGNvZXJjZSB3b3JkICdsaXN0KSkKICAgICAgICAoc3lsbGFibGVzIG5pbCkKICAgICAgICAoY3VycmVudCBuaWwpKQogICAgKGRvbGlzdCAoY2ggY2hhcnMpCiAgICAgIChwdXNoIGNoIGN1cnJlbnQpCiAgICAgICh3aGVuICh2b3dlbC1wIGNoKQogICAgICAgIChwdXNoIChjb2VyY2UgKHJldmVyc2UgY3VycmVudCkgJ3N0cmluZykgc3lsbGFibGVzKQogICAgICAgIChzZXRmIGN1cnJlbnQgbmlsKSkpCiAgICAod2hlbiBjdXJyZW50CiAgICAgIChpZiBzeWxsYWJsZXMKICAgICAgICAgIChzZXRmIChjYXIgc3lsbGFibGVzKQogICAgICAgICAgICAgICAgKGNvbmNhdGVuYXRlICdzdHJpbmcgKGNhciBzeWxsYWJsZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2VyY2UgKHJldmVyc2UgY3VycmVudCkgJ3N0cmluZykpKQogICAgICAgICAgKHB1c2ggKGNvZXJjZSAocmV2ZXJzZSBjdXJyZW50KSAnc3RyaW5nKSBzeWxsYWJsZXMpKSkKICAgIChyZXZlcnNlIHN5bGxhYmxlcykpKQoKKGRlZnVuIHNwbGl0LXN0cmluZyAoc3RyKQogIChsZXQgKCh3b3JkcyBuaWwpIChjdXJyZW50IG5pbCkpCiAgICAoZG90aW1lcyAoaSAobGVuZ3RoIHN0cikpCiAgICAgIChsZXQgKChjaCAoY2hhciBzdHIgaSkpKQogICAgICAgIChpZiAoY2hhcj0gY2ggI1xTcGFjZSkKICAgICAgICAgICAgKHdoZW4gY3VycmVudAogICAgICAgICAgICAgIChwdXNoIChjb2VyY2UgKHJldmVyc2UgY3VycmVudCkgJ3N0cmluZykgd29yZHMpCiAgICAgICAgICAgICAgKHNldGYgY3VycmVudCBuaWwpKQogICAgICAgICAgICAocHVzaCBjaCBjdXJyZW50KSkpKQogICAgKHdoZW4gY3VycmVudAogICAgICAocHVzaCAoY29lcmNlIChyZXZlcnNlIGN1cnJlbnQpICdzdHJpbmcpIHdvcmRzKSkKICAgIChyZXZlcnNlIHdvcmRzKSkpCgooZGVmdW4gc3BsaXQtcGhyYXNlIChwaHJhc2UpCiAgKG1hcGNhciAjJ3NwbGl0LXdvcmQgKHNwbGl0LXN0cmluZyBwaHJhc2UpKSkKCihwcmludCAoc3BsaXQtcGhyYXNlICJoZWxsbyB3b3JsZCIpKQo=