From ba4c5edaa300afca8eb4ddaab78d025bc503a6b0 Mon Sep 17 00:00:00 2001 From: Artem-Darius Weber Date: Thu, 17 Apr 2025 11:55:46 +0300 Subject: [PATCH] (IT 1) feat: add subset generation with tail recursion --- Individual Task 1/Program.fs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Individual Task 1/Program.fs b/Individual Task 1/Program.fs index ce8a39b..daea313 100644 --- a/Individual Task 1/Program.fs +++ b/Individual Task 1/Program.fs @@ -9,10 +9,26 @@ module EulerProblem105 = |> 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 []