let vowels = "aeiou" .ToCharArray ( )
let IsVowel letter = Array.exists ( fun vowel -> letter = vowel) vowels
let ListToString lst =
let sb = new System.Text .StringBuilder ( )
sb.Append ( ( Array.ofList lst) ) .ToString ( )
let Disemvoweler ( input: string) =
let chars = input.ToLower ( ) .ToCharArray ( )
let consonants, vowels =
Array.fold ( fun ( consonants, vowels) c ->
if IsVowel c then consonants, c:: vowels
elif c <> ' ' then c:: consonants , vowels
else consonants, vowels
) ( [ ] , [ ] ) chars
List.rev consonants, List.rev vowels
let Disemvowel ( input: string) =
let consonants, vowels = Disemvoweler input
printfn "%s" input
printfn "%s" ( ListToString consonants)
printfn "%s" ( ListToString vowels)
printfn ""
[ < EntryPoint> ]
let main argv =
Disemvowel "two drums and a cymbal fall off a cliff"
Disemvowel "all those who believe in psychokinesis raise my hand"
Disemvowel "did you hear about the excellent farmer who was outstanding in his field"
//System.Console.ReadLine() |> ignore
0 // return an integer exit code
bGV0IHZvd2VscyA9ICJhZWlvdSIuVG9DaGFyQXJyYXkoKQpsZXQgSXNWb3dlbCBsZXR0ZXIgPSBBcnJheS5leGlzdHMgKGZ1biB2b3dlbCAtPiBsZXR0ZXIgPSB2b3dlbCkgdm93ZWxzCmxldCBMaXN0VG9TdHJpbmcgbHN0ID0gCiAgICBsZXQgc2IgPSBuZXcgU3lzdGVtLlRleHQuU3RyaW5nQnVpbGRlcigpCiAgICBzYi5BcHBlbmQoKEFycmF5Lm9mTGlzdCBsc3QpKS5Ub1N0cmluZygpCgpsZXQgRGlzZW12b3dlbGVyIChpbnB1dDogc3RyaW5nKSA9CiAgICBsZXQgY2hhcnMgPSBpbnB1dC5Ub0xvd2VyKCkuVG9DaGFyQXJyYXkoKQogICAgbGV0IGNvbnNvbmFudHMsIHZvd2VscyA9IAogICAgICAgIEFycmF5LmZvbGQgKGZ1biAoY29uc29uYW50cywgdm93ZWxzKSBjIC0+CiAgICAgICAgICAgIGlmIElzVm93ZWwgYyB0aGVuIGNvbnNvbmFudHMsIGM6OnZvd2VscwogICAgICAgICAgICBlbGlmIGMgPD4gJyAnIHRoZW4gYzo6Y29uc29uYW50cywgdm93ZWxzCiAgICAgICAgICAgIGVsc2UgY29uc29uYW50cywgdm93ZWxzCiAgICAgICAgKSAoW10sIFtdKSBjaGFycwogICAgTGlzdC5yZXYgY29uc29uYW50cywgTGlzdC5yZXYgdm93ZWxzCgpsZXQgRGlzZW12b3dlbCAoaW5wdXQ6IHN0cmluZykgPSAKICAgIGxldCBjb25zb25hbnRzLCB2b3dlbHMgPSBEaXNlbXZvd2VsZXIgaW5wdXQKICAgIHByaW50Zm4gIiVzIiBpbnB1dAogICAgcHJpbnRmbiAiJXMiIChMaXN0VG9TdHJpbmcgY29uc29uYW50cykKICAgIHByaW50Zm4gIiVzIiAoTGlzdFRvU3RyaW5nIHZvd2VscykKICAgIHByaW50Zm4gIiIKCls8RW50cnlQb2ludD5dCmxldCBtYWluIGFyZ3YgPSAKICAgIERpc2Vtdm93ZWwgInR3byBkcnVtcyBhbmQgYSBjeW1iYWwgZmFsbCBvZmYgYSBjbGlmZiIKICAgIERpc2Vtdm93ZWwgImFsbCB0aG9zZSB3aG8gYmVsaWV2ZSBpbiBwc3ljaG9raW5lc2lzIHJhaXNlIG15IGhhbmQiCiAgICBEaXNlbXZvd2VsICJkaWQgeW91IGhlYXIgYWJvdXQgdGhlIGV4Y2VsbGVudCBmYXJtZXIgd2hvIHdhcyBvdXRzdGFuZGluZyBpbiBoaXMgZmllbGQiCiAgICAvL1N5c3RlbS5Db25zb2xlLlJlYWRMaW5lKCkgfD4gaWdub3JlCiAgICAwIC8vIHJldHVybiBhbiBpbnRlZ2VyIGV4aXQgY29kZQ==