// 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 [] let main argv = let result = EulerProblem105.run "sets.txt" printfn "Результат: %d" result 0