From 967e964f453fc031816270b90d6eab38410769a3 Mon Sep 17 00:00:00 2001 From: Tomasz Chojnacki Date: Fri, 9 Dec 2022 19:31:24 +0100 Subject: Extract common functions to util module --- aoc-2022-dotnet/Day07/Program.fs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'aoc-2022-dotnet/Day07/Program.fs') diff --git a/aoc-2022-dotnet/Day07/Program.fs b/aoc-2022-dotnet/Day07/Program.fs index 7e16cb6..e48bb53 100644 --- a/aoc-2022-dotnet/Day07/Program.fs +++ b/aoc-2022-dotnet/Day07/Program.fs @@ -2,6 +2,7 @@ open System.IO open FParsec +open Common let fileSizeThreshold = 100_000 let totalDiskSpace = 70_000_000 @@ -28,7 +29,7 @@ let parseCommands input = let pcmd = pcd <|> pls let pinput = many pcmd - Common.parse pinput input + Util.parse pinput input let combine = function @@ -46,11 +47,11 @@ let buildFilesystem commands = commands |> helper [] |> Map.ofList -let rec directorySize fileSystem path = - fileSystem +let rec dirSize filesystem path = + filesystem |> Map.find path |> List.sumBy (function - | Dir dir -> directorySize fileSystem <| combine (path, dir) + | Dir dir -> dirSize filesystem <| combine (path, dir) | File size -> size) let part1 = Seq.filter ((>=) fileSizeThreshold) >> Seq.sum @@ -62,11 +63,11 @@ let part2 sizes = sizes |> Seq.filter ((<=) missingSpace) |> Seq.min let solution reduceSizes input = - let fileSystem = input |> parseCommands |> buildFilesystem + let filesystem = input |> parseCommands |> buildFilesystem - fileSystem + filesystem |> Map.keys - |> Seq.map (directorySize fileSystem) + |> Seq.map (dirSize filesystem) |> reduceSizes let test = File.ReadAllText("test.txt") -- cgit v1.2.3