27 lines
693 B
FSharp
27 lines
693 B
FSharp
module _37
|
|
|
|
let truncations i =
|
|
let s = string i
|
|
let len = s.Length
|
|
seq {
|
|
for n in 0..(len - 1) do
|
|
yield s.Substring(0, len - n)
|
|
if (n > 0) then
|
|
yield s.Substring(len - n)
|
|
} |> Seq.distinct |> Seq.toList |> List.map (int)
|
|
|
|
let truncatablePrimes =
|
|
let oddOr2 i = i % 2 = 1 || i = 2
|
|
|
|
let pa =
|
|
common.primeArray 1000000
|
|
|> Array.filter (common.numDigits >> (Array.forall oddOr2))
|
|
|
|
let isPrime n = Array.exists (fun p -> p = n) pa
|
|
pa
|
|
|> Array.filter ((<) 10)
|
|
|> Array.map truncations
|
|
|> Array.filter (List.forall isPrime)
|
|
|> Array.map (Seq.nth 0)
|
|
|> Array.sum
|