Files
2025-08-03 20:16:55 -07:00

34 lines
983 B
FSharp

module _49
open common
let rec insertions x = function
| [] -> [[x]]
| (y :: ys) as l -> (x::l)::(List.map (fun x -> y::x) (insertions x ys))
let rec permutations = function
| [] -> seq [[]]
| x :: xs -> Seq.concat (Seq.map (insertions x) (permutations xs))
let primeSequence =
let primes =
primeArray 10000 |> Seq.skipWhile ((>) 999) |> Array.ofSeq
let isPrime = isPrimeFunByArray primes
primes
|> Seq.map (
numDigits >> List.ofArray >>
permutations >>
Seq.map (Array.ofList >> digitsNum) >>
Seq.filter isPrime >>
Seq.distinct >>
Seq.sort >>
Seq.toArray
)
|> Seq.distinct
|> Seq.collect (List.ofSeq >> combinations 3)
|> Seq.filter (fun a -> a.[2] - a.[1] = a.[1] - a.[0])
|> Seq.map (List.rev >> List.map (numDigits >> Array.map (string) >> Array.fold (+) "") >> List.fold (+) "")
//|> Seq.toArray