( defn disemvowler [ input]
( loop [ letter ( first input)
cnsnnts [ ]
vowels [ ]
remaining ( rest input) ]
( if letter
( case letter
( \a \A \e \E \i \I \o \O \u \U
) ( recur
( first remaining
) cnsnnts
( conj vowels letter
) ( rest remaining
) ) \space ( recur ( first remaining) cnsnnts vowels ( rest remaining) )
( recur
( first remaining
) ( conj cnsnnts letter
) vowels
( rest remaining
) ) ) { : consonants cnsnnts : vowels vowels} ) ) )
( defn disemvowler2 [ input]
{ : consonants ( clojure.string / join ( re- seq #"[^aeiouAEIOU ]" input)) :vowels (clojure.string/join (re-seq #"[aeiouAEIOU]" input))})
( println ( disemvowler "all those who believe in psychokinesis raise my hand" ) )
( println ( disemvowler2 "all those who believe in psychokinesis raise my hand" ) )
KGRlZm4gZGlzZW12b3dsZXIgW2lucHV0XQogICAgICAobG9vcCBbbGV0dGVyIChmaXJzdCBpbnB1dCkKICAgICAgICAgICAgIGNuc25udHMgW10KICAgICAgICAgICAgIHZvd2VscyBbXQogICAgICAgICAgICAgcmVtYWluaW5nIChyZXN0IGlucHV0KV0KICAgICAgICAoaWYgbGV0dGVyCiAgICAgICAgICAoY2FzZSBsZXR0ZXIKICAgICAgICAgICAgKFxhIFxBIFxlIFxFIFxpIFxJIFxvIFxPIFx1IFxVKSAocmVjdXIgKGZpcnN0IHJlbWFpbmluZykgY25zbm50cyAoY29uaiB2b3dlbHMgbGV0dGVyKSAocmVzdCByZW1haW5pbmcpKQogICAgICAgICAgICBcc3BhY2UgKHJlY3VyIChmaXJzdCByZW1haW5pbmcpIGNuc25udHMgdm93ZWxzIChyZXN0IHJlbWFpbmluZykpCiAgICAgICAgICAgIChyZWN1ciAoZmlyc3QgcmVtYWluaW5nKSAoY29uaiBjbnNubnRzIGxldHRlcikgdm93ZWxzIChyZXN0IHJlbWFpbmluZykpKQogICAgICAgICAgezpjb25zb25hbnRzIGNuc25udHMgOnZvd2VscyB2b3dlbHN9KSkpCgooZGVmbiBkaXNlbXZvd2xlcjIgW2lucHV0XQogICAgICB7OmNvbnNvbmFudHMgKGNsb2p1cmUuc3RyaW5nL2pvaW4gKHJlLXNlcSAjIlteYWVpb3VBRUlPVSBdIiBpbnB1dCkpIDp2b3dlbHMgKGNsb2p1cmUuc3RyaW5nL2pvaW4gKHJlLXNlcSAjIlthZWlvdUFFSU9VXSIgaW5wdXQpKX0pCgoocHJpbnRsbiAoZGlzZW12b3dsZXIgImFsbCB0aG9zZSB3aG8gYmVsaWV2ZSBpbiBwc3ljaG9raW5lc2lzIHJhaXNlIG15IGhhbmQiKSkKKHByaW50bG4gKGRpc2Vtdm93bGVyMiAiYWxsIHRob3NlIHdobyBiZWxpZXZlIGluIHBzeWNob2tpbmVzaXMgcmFpc2UgbXkgaGFuZCIpKQ==