You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.3 KiB
39 lines
1.3 KiB
// For more information see https://aka.ms/fsharp-console-apps
|
|
open System.IO
|
|
|
|
module EulerProblem105 =
|
|
let parseInput (filePath: string) =
|
|
File.ReadAllLines(filePath)
|
|
|> Array.map (fun line ->
|
|
line.Split(',')
|
|
|> Array.map int
|
|
|> Array.toList)
|
|
|> Array.toList
|
|
|
|
let generateAllSubsets set =
|
|
let rec generateSubsetsAux acc remaining =
|
|
match remaining with
|
|
| [] -> acc
|
|
| x::xs ->
|
|
let newSubsets = List.map (fun subset -> x::subset) acc
|
|
generateSubsetsAux (acc @ newSubsets) xs
|
|
|
|
let allSubsets = generateSubsetsAux [[]] set
|
|
List.filter (fun subset -> not (List.isEmpty subset)) allSubsets
|
|
|
|
let run filePath =
|
|
let sets = parseInput filePath
|
|
printfn "Загружено %d множеств" (List.length sets)
|
|
|
|
let testSet = List.head sets
|
|
let subsets = generateAllSubsets testSet
|
|
printfn "Для первого множества сгенерировано %d непустых подмножеств" (List.length subsets)
|
|
|
|
0
|
|
|
|
[<EntryPoint>]
|
|
let main argv =
|
|
let result = EulerProblem105.run "sets.txt"
|
|
printfn "Результат: %d" result
|
|
0
|