(IT 1) feat: implement special sum set conditions check

main
Artem-Darius Weber 3 weeks ago
parent ba4c5edaa3
commit 40f52587cd

@ -21,13 +21,43 @@ module EulerProblem105 =
let allSubsets = generateSubsetsAux [[]] set
List.filter (fun subset -> not (List.isEmpty subset)) allSubsets
let checkPrefixSuffixRule (sortedSet: int list) =
let n = List.length sortedSet
let rec check k =
if k > n / 2 then true
else
let prefixSum = sortedSet |> List.take (k+1) |> List.sum
let suffixSum = sortedSet |> List.rev |> List.take k |> List.sum
if prefixSum <= suffixSum then false
else check (k+1)
check 1
let checkUniqueSums set =
let subsets = generateAllSubsets set
let sums = subsets |> List.map List.sum
let uniqueSums = sums |> Set.ofList
List.length sums = Set.count uniqueSums
let isSpecialSumSet set =
let sortedSet = List.sort set
checkPrefixSuffixRule sortedSet && checkUniqueSums sortedSet
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)
let testExample1 = sets |> List.head
let testExample2 = sets |> List.item 1
printfn "Проверка первого примера: %A" testExample1
printfn "Результат: %b (ожидается: false)" (isSpecialSumSet testExample1)
printfn "Проверка второго примера: %A" testExample2
printfn "Результат: %b (ожидается: true)" (isSpecialSumSet testExample2)
0

Loading…
Cancel
Save