aboutsummaryrefslogtreecommitdiff
path: root/aoc-2022-dotnet/Day05/Program.fs
diff options
context:
space:
mode:
Diffstat (limited to 'aoc-2022-dotnet/Day05/Program.fs')
-rw-r--r--aoc-2022-dotnet/Day05/Program.fs17
1 files changed, 6 insertions, 11 deletions
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)