|
|
|
@ -45,6 +45,15 @@ module EulerProblem105 =
|
|
|
|
|
let isSpecialSumSet set =
|
|
|
|
|
let sortedSet = List.sort set
|
|
|
|
|
checkPrefixSuffixRule sortedSet && checkUniqueSums sortedSet
|
|
|
|
|
|
|
|
|
|
let findAllSpecialSumSets sets =
|
|
|
|
|
sets
|
|
|
|
|
|> List.filter isSpecialSumSet
|
|
|
|
|
|
|
|
|
|
let sumSpecialSumSets specialSets =
|
|
|
|
|
specialSets
|
|
|
|
|
|> List.map List.sum
|
|
|
|
|
|> List.sum
|
|
|
|
|
|
|
|
|
|
let run filePath =
|
|
|
|
|
let sets = parseInput filePath
|
|
|
|
@ -59,10 +68,15 @@ module EulerProblem105 =
|
|
|
|
|
printfn "Проверка второго примера: %A" testExample2
|
|
|
|
|
printfn "Результат: %b (ожидается: true)" (isSpecialSumSet testExample2)
|
|
|
|
|
|
|
|
|
|
0
|
|
|
|
|
let specialSets = findAllSpecialSumSets sets
|
|
|
|
|
printfn "Найдено %d special sum sets" (List.length specialSets)
|
|
|
|
|
|
|
|
|
|
let result = sumSpecialSumSets specialSets
|
|
|
|
|
printfn "Окончательный ответ: %d" result
|
|
|
|
|
|
|
|
|
|
result
|
|
|
|
|
|
|
|
|
|
[<EntryPoint>]
|
|
|
|
|
let main argv =
|
|
|
|
|
let result = EulerProblem105.run "sets.txt"
|
|
|
|
|
printfn "Результат: %d" result
|
|
|
|
|
0
|
|
|
|
|