プログラミング入門

c432f487 :Anonymous 2015-10-06 15:51
>>99fb6418
実装してみました
入力がどうもうまくいかず
main 3 "1,1,2,3,3,3,2,1,2";;
のようになってしまいましたが自分の中ではうまくできたほうかなと
(List.groupBy もうまくいきませんでした)

let parse (x:string) =
match System.Int32.TryParse(x) with
|(true,int) -> int
|_ -> 0

let main (max:int) (s:string) =
let a = s.Split ','|>Seq.map parse
let l =
a
|>Seq.fold (fun x y -> if (List.head x) = y then x else y::x) [(Seq.head a)]
|>List.toSeq
|>Seq.groupBy(fun x -> x)
|>List.ofSeq
|>List.sortBy fst
if List.length l > max then printfn "入力エラー" else l|>List.iter (fun x -> printfn "%dは%dグループあります" (fst x) (Seq.length (snd x)));;
Powered by shinGETsu.