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

// 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