24 lines
681 B
FSharp
24 lines
681 B
FSharp
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 |