Как посчитать количество определенных гласных из строки - PullRequest
0 голосов
/ 02 марта 2019

Я новичок в F #, и я создаю программу, которая дает количество гласных в данной строке и количество конкретных гласных, повторяющихся в этой строке.Я реализовал следующий код, но продолжаю получать ошибки.Может кто-нибудь показать лучший способ сделать это.

#light

  let count_letter targetChar = Seq.fold (fun count ch -> if ch = targetChar then count + 1 else count) 0
  [<EntryPoint>]
  let mainargv =
      printf "input> "
      let input = System.Console.ReadLine()
      let text = input;
      let ch1 = 'a'
      let ch2 = 'e'
      let ch3 = 'i'
      let ch4 = 'o'
      let ch5 = 'u'
      let vowels = ['a';'e';'i';'o';'u']
      let if_vowel =
          fun c -> vowels |> List.contains c          
      0

1 Ответ

0 голосов
/ 02 марта 2019

Ваш код в основном правильный.Это еще один способ сделать то же самое:

let inline (|>!) v f = f v ; v // tee operator

let vowels     = ['a';'e';'i';'o';'u']
let if_vowel c = vowels |> List.contains c

text
|>   Seq.filter if_vowel
|>! (Seq.length >> printfn "vowels: %d")
|>   Seq.countBy id
|>   Seq.sort
|>   Seq.iter (fun (c, n) -> printfn "%c: %d" c n)

Вывод похож, но не совсем совпадает с вашим, потому что он показывает только те гласные, которые присутствуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...