module _39 let rightTriPerimeter = let pythagreonTriple m n = (m * m - n * n, 2 * m * n, m * m + n * n) let sumTriple (a,b,c) = a + b + c let parity a b = (a + b) % 2 = 1 let multiples lim n = seq { n .. n .. lim } common.coprimeArray 33 |> Array.mapi (fun i cp -> cp |> Seq.filter (parity i) |> Seq.map ((pythagreonTriple i) >> sumTriple) |> Seq.collect (multiples 1000) ) |> Seq.collect (fun l -> l) |> Seq.groupBy (fun n -> n) |> Seq.maxBy (fun g -> Seq.length (snd g))