module _52 open System let findSameDigits = // todo: optimize with combination of available digits let powerOfTenNums pow = let b = Math.Pow(10.0, float pow) |> int seq {1..(b-1)} |> Seq.map ((+) b) let multiples num = seq {num*2..num..(num*6) } let numSet num = Set (common.numDigits num) let rec sd pow = powerOfTenNums pow |> Seq.filter ( fun n -> let nDigits = numSet n multiples n |> Seq.map (fun m -> numSet m) |> Seq.forall (fun mDigits -> nDigits = mDigits) ) |> Seq.map (fun n -> (n, multiples n |> Seq.toArray)) sd 5