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