aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--aoc-2022-dotnet/Common/Common.fsproj16
-rw-r--r--aoc-2022-dotnet/Common/Library.fs8
-rw-r--r--aoc-2022-dotnet/Day04/Day04.fsproj4
-rw-r--r--aoc-2022-dotnet/Day04/Program.fs5
-rw-r--r--aoc-2022-dotnet/Day05/Day05.fsproj4
-rw-r--r--aoc-2022-dotnet/Day05/Program.fs17
-rw-r--r--aoc-2022-dotnet/Day06/Program.fs4
-rw-r--r--aoc-2022-dotnet/Day07/Day07.fsproj4
-rw-r--r--aoc-2022-dotnet/Day07/Program.fs8
-rw-r--r--aoc-2022-dotnet/aoc-2022-dotnet.sln8
10 files changed, 57 insertions, 21 deletions
diff --git a/aoc-2022-dotnet/Common/Common.fsproj b/aoc-2022-dotnet/Common/Common.fsproj
new file mode 100644
index 0000000..c8a185a
--- /dev/null
+++ b/aoc-2022-dotnet/Common/Common.fsproj
@@ -0,0 +1,16 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+ <PropertyGroup>
+ <TargetFramework>net7.0</TargetFramework>
+ <GenerateDocumentationFile>true</GenerateDocumentationFile>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <Compile Include="Library.fs" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <PackageReference Include="FParsec" Version="1.1.1" />
+ </ItemGroup>
+
+</Project>
diff --git a/aoc-2022-dotnet/Common/Library.fs b/aoc-2022-dotnet/Common/Library.fs
new file mode 100644
index 0000000..7354509
--- /dev/null
+++ b/aoc-2022-dotnet/Common/Library.fs
@@ -0,0 +1,8 @@
+module Common
+
+open FParsec
+
+let parse parser input =
+ match run parser input with
+ | Success (result, _, _) -> result
+ | _ -> failwith "Invalid input format!"
diff --git a/aoc-2022-dotnet/Day04/Day04.fsproj b/aoc-2022-dotnet/Day04/Day04.fsproj
index 44c3fba..358ef88 100644
--- a/aoc-2022-dotnet/Day04/Day04.fsproj
+++ b/aoc-2022-dotnet/Day04/Day04.fsproj
@@ -19,4 +19,8 @@
<PackageReference Include="FParsec" Version="1.1.1" />
</ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Common\Common.fsproj" />
+ </ItemGroup>
+
</Project>
diff --git a/aoc-2022-dotnet/Day04/Program.fs b/aoc-2022-dotnet/Day04/Program.fs
index 25cc3b6..2221a4a 100644
--- a/aoc-2022-dotnet/Day04/Program.fs
+++ b/aoc-2022-dotnet/Day04/Program.fs
@@ -6,10 +6,7 @@ open FParsec
let parseLine line =
let prange = pint32 .>> pstring "-" .>>. pint32
let ppair = prange .>> pstring "," .>>. prange .>> eof
-
- match run ppair line with
- | Success (result, _, _) -> result
- | _ -> failwith "Invalid line format!"
+ Common.parse ppair line
let fullyOverlap ((a, b), (c, d)) =
(a <= c && d <= b) || (c <= a && b <= d)
diff --git a/aoc-2022-dotnet/Day05/Day05.fsproj b/aoc-2022-dotnet/Day05/Day05.fsproj
index 44c3fba..358ef88 100644
--- a/aoc-2022-dotnet/Day05/Day05.fsproj
+++ b/aoc-2022-dotnet/Day05/Day05.fsproj
@@ -19,4 +19,8 @@
<PackageReference Include="FParsec" Version="1.1.1" />
</ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Common\Common.fsproj" />
+ </ItemGroup>
+
</Project>
diff --git a/aoc-2022-dotnet/Day05/Program.fs b/aoc-2022-dotnet/Day05/Program.fs
index e15f53d..f471a31 100644
--- a/aoc-2022-dotnet/Day05/Program.fs
+++ b/aoc-2022-dotnet/Day05/Program.fs
@@ -1,4 +1,6 @@
-open System
+module Day05
+
+open System
open System.IO
open FParsec
@@ -9,10 +11,7 @@ type Move =
let dec n = n - 1
let pPart str = pstring str >>. pint32
let pMove = tuple3 (pPart "move ") (pPart " from " |>> dec) (pPart " to " |>> dec)
-
- match run pMove str with
- | Success (result, _, _) -> Move result
- | _ -> failwith "Invalid move format!"
+ Common.parse pMove str |> Move
static member execute order stacks (Move (n, fi, ti)) =
List.mapi
@@ -33,12 +32,8 @@ let parseStacks str =
let pCrateLine = sepBy pCrate (pchar ' ') .>> skipNewline
let pHeader = many pCrateLine
- let parsed =
- match run pHeader str with
- | Success (result, _, _) -> result
- | _ -> failwith "Invalid header format!"
-
- parsed
+ str
+ |> Common.parse pHeader
|> List.transpose
|> List.map (List.choose id)
diff --git a/aoc-2022-dotnet/Day06/Program.fs b/aoc-2022-dotnet/Day06/Program.fs
index 75a5ffb..c9f6568 100644
--- a/aoc-2022-dotnet/Day06/Program.fs
+++ b/aoc-2022-dotnet/Day06/Program.fs
@@ -1,4 +1,6 @@
-open System.IO
+module Day06
+
+open System.IO
let solution n =
Seq.windowed n
diff --git a/aoc-2022-dotnet/Day07/Day07.fsproj b/aoc-2022-dotnet/Day07/Day07.fsproj
index 44c3fba..358ef88 100644
--- a/aoc-2022-dotnet/Day07/Day07.fsproj
+++ b/aoc-2022-dotnet/Day07/Day07.fsproj
@@ -19,4 +19,8 @@
<PackageReference Include="FParsec" Version="1.1.1" />
</ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Common\Common.fsproj" />
+ </ItemGroup>
+
</Project>
diff --git a/aoc-2022-dotnet/Day07/Program.fs b/aoc-2022-dotnet/Day07/Program.fs
index 89cd728..7e16cb6 100644
--- a/aoc-2022-dotnet/Day07/Program.fs
+++ b/aoc-2022-dotnet/Day07/Program.fs
@@ -1,4 +1,6 @@
-open System.IO
+module Day07
+
+open System.IO
open FParsec
let fileSizeThreshold = 100_000
@@ -26,9 +28,7 @@ let parseCommands input =
let pcmd = pcd <|> pls
let pinput = many pcmd
- match run pinput input with
- | Success (result, _, _) -> result
- | _ -> failwith "Invalid input format!"
+ Common.parse pinput input
let combine =
function
diff --git a/aoc-2022-dotnet/aoc-2022-dotnet.sln b/aoc-2022-dotnet/aoc-2022-dotnet.sln
index 88eab36..0a2fc9a 100644
--- a/aoc-2022-dotnet/aoc-2022-dotnet.sln
+++ b/aoc-2022-dotnet/aoc-2022-dotnet.sln
@@ -22,7 +22,9 @@ Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Day05", "Day05\Day05.fsproj
EndProject
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Day06", "Day06\Day06.fsproj", "{24E41736-93F0-4222-810F-47B9A740E599}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Day07", "Day07\Day07.fsproj", "{5816A6D4-F70A-419E-AB40-C41C0AB5364F}"
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "Day07", "Day07\Day07.fsproj", "{5816A6D4-F70A-419E-AB40-C41C0AB5364F}"
+EndProject
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Common", "Common\Common.fsproj", "{3148A67C-BDDB-4660-83E6-C2C6D6016A47}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -58,6 +60,10 @@ Global
{5816A6D4-F70A-419E-AB40-C41C0AB5364F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5816A6D4-F70A-419E-AB40-C41C0AB5364F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5816A6D4-F70A-419E-AB40-C41C0AB5364F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3148A67C-BDDB-4660-83E6-C2C6D6016A47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {3148A67C-BDDB-4660-83E6-C2C6D6016A47}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3148A67C-BDDB-4660-83E6-C2C6D6016A47}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {3148A67C-BDDB-4660-83E6-C2C6D6016A47}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE