This problem is designed to make use of several tools.
let problem42a = let triangle n = let n' = n |> float in (0.5)*(n')*(n'+1.) |> int let tseq = Seq.initInfinite (fun i -> triangle (i+1)) |> Seq.cache let wordValue (s:string) = s |> Seq.sumBy (fun c -> (c |> int)-64) let text = System.IO.File.ReadAllText("words.txt") let words = text.Split([|',';'"'|], System.StringSplitOptions.RemoveEmptyEntries) |> Seq.readonly let isTriangleWord w = let wv = wordValue w tseq |> Seq.takeWhile (fun t -> t <= wv) |> Seq.exists ((=) wv) words |> Seq.filter isTriangleWord |> Seq.length
No comments:
Post a Comment