diff --git a/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/AdventOfCode2023.FSharp.Lib.fsproj b/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/AdventOfCode2023.FSharp.Lib.fsproj
index f00e16b..2b11007 100644
--- a/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/AdventOfCode2023.FSharp.Lib.fsproj
+++ b/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/AdventOfCode2023.FSharp.Lib.fsproj
@@ -16,6 +16,7 @@
+
diff --git a/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/Day8.fs b/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/Day8.fs
new file mode 100644
index 0000000..272b831
--- /dev/null
+++ b/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/Day8.fs
@@ -0,0 +1,30 @@
+namespace AdventOfCode2023
+
+open System
+open System.Globalization
+
+[]
+module Day8 =
+
+ let parse (s : string) : ResizeArray =
+ use mutable lines = StringSplitEnumerator.make '\n' s
+ let result = ResizeArray ()
+
+ while lines.MoveNext () do
+ if not lines.Current.IsEmpty then
+ use mutable line = StringSplitEnumerator.make' ' ' lines.Current
+ line.MoveNext () |> ignore
+ result.Add (3)
+
+ result
+
+ let part1 (s : string) =
+ let arr = parse s
+ let mutable answer = 0
+ answer
+
+ let part2 (s : string) =
+ let arr = parse s
+ let mutable answer = 0
+
+ answer
diff --git a/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp/Program.fs b/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp/Program.fs
index 608c7f9..5514ffb 100644
--- a/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp/Program.fs
+++ b/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp/Program.fs
@@ -158,6 +158,21 @@ module Program =
Console.WriteLine (part2.ToString ())
Console.Error.WriteLine ((1_000.0 * float sw.ElapsedTicks / float Stopwatch.Frequency).ToString () + "ms")
+ Console.WriteLine "=====Day 8====="
+
+ do
+ let input = Path.Combine (dir.FullName, "day8.txt") |> File.ReadAllText
+ sw.Restart ()
+ let part1 = Day8.part1 input
+ sw.Stop ()
+ Console.WriteLine (part1.ToString ())
+ Console.Error.WriteLine ((1_000.0 * float sw.ElapsedTicks / float Stopwatch.Frequency).ToString () + "ms")
+ sw.Restart ()
+ let part2 = Day8.part2 input
+ sw.Stop ()
+ Console.WriteLine (part2.ToString ())
+ Console.Error.WriteLine ((1_000.0 * float sw.ElapsedTicks / float Stopwatch.Frequency).ToString () + "ms")
+
endToEnd.Stop ()
Console.Error.WriteLine (
diff --git a/AdventOfCode2023.FSharp/Test/Test.fsproj b/AdventOfCode2023.FSharp/Test/Test.fsproj
index d7232f8..c8d2ffe 100644
--- a/AdventOfCode2023.FSharp/Test/Test.fsproj
+++ b/AdventOfCode2023.FSharp/Test/Test.fsproj
@@ -16,6 +16,7 @@
+
@@ -24,6 +25,7 @@
+
diff --git a/AdventOfCode2023.FSharp/Test/TestDay8.fs b/AdventOfCode2023.FSharp/Test/TestDay8.fs
new file mode 100644
index 0000000..607619c
--- /dev/null
+++ b/AdventOfCode2023.FSharp/Test/TestDay8.fs
@@ -0,0 +1,46 @@
+namespace AdventOfCode2023.Test
+
+open System
+open AdventOfCode2023
+open NUnit.Framework
+open FsUnitTyped
+open System.IO
+
+[]
+module TestDay8 =
+
+ let sample = Assembly.getEmbeddedResource typeof.Assembly "day8.txt"
+
+ []
+ let part1Sample () =
+ sample |> Day8.part1 |> shouldEqual 0
+
+ []
+ let part2Sample () =
+ sample |> Day8.part2 |> shouldEqual 0
+
+ []
+ let part1Actual () =
+ let s =
+ try
+ File.ReadAllText (Path.Combine (__SOURCE_DIRECTORY__, "../../inputs/day8.txt"))
+ with
+ | :? DirectoryNotFoundException
+ | :? FileNotFoundException ->
+ Assert.Inconclusive ()
+ failwith "unreachable"
+
+ Day8.part1 s |> shouldEqual 0
+
+ []
+ let part2Actual () =
+ let s =
+ try
+ File.ReadAllText (Path.Combine (__SOURCE_DIRECTORY__, "../../inputs/day8.txt"))
+ with
+ | :? DirectoryNotFoundException
+ | :? FileNotFoundException ->
+ Assert.Inconclusive ()
+ failwith "unreachable"
+
+ Day8.part2 s |> shouldEqual 0
diff --git a/AdventOfCode2023.FSharp/Test/samples/day8.txt b/AdventOfCode2023.FSharp/Test/samples/day8.txt
new file mode 100644
index 0000000..e69de29