diff --git a/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/AdventOfCode2023.FSharp.Lib.fsproj b/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/AdventOfCode2023.FSharp.Lib.fsproj index d989f2b..a760c72 100644 --- a/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/AdventOfCode2023.FSharp.Lib.fsproj +++ b/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/AdventOfCode2023.FSharp.Lib.fsproj @@ -13,6 +13,7 @@ + diff --git a/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/Day6.fs b/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/Day6.fs new file mode 100644 index 0000000..4021732 --- /dev/null +++ b/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp.Lib/Day6.fs @@ -0,0 +1,14 @@ +namespace AdventOfCode2023 + +open System + +[] +module Day6 = + + let part1 (s : string) = + use mutable lines = StringSplitEnumerator.make '\n' s + -1 + + let part2 (s : string) = + use mutable lines = StringSplitEnumerator.make '\n' s + -1 diff --git a/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp/Program.fs b/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp/Program.fs index 94fa667..debee23 100644 --- a/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp/Program.fs +++ b/AdventOfCode2023.FSharp/AdventOfCode2023.FSharp/Program.fs @@ -121,6 +121,21 @@ module Program = Console.WriteLine (part2.ToString ()) Console.Error.WriteLine ((1_000.0 * float sw.ElapsedTicks / float Stopwatch.Frequency).ToString () + "ms") + printfn "=====Day 6=====" + + do + let input = Path.Combine (dir.FullName, "day6.txt") |> File.ReadAllText + sw.Restart () + let part1 = Day6.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 = Day6.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 aa21125..e7a0f34 100644 --- a/AdventOfCode2023.FSharp/Test/Test.fsproj +++ b/AdventOfCode2023.FSharp/Test/Test.fsproj @@ -14,12 +14,14 @@ + + diff --git a/AdventOfCode2023.FSharp/Test/TestDay6.fs b/AdventOfCode2023.FSharp/Test/TestDay6.fs new file mode 100644 index 0000000..2848b73 --- /dev/null +++ b/AdventOfCode2023.FSharp/Test/TestDay6.fs @@ -0,0 +1,46 @@ +namespace AdventOfCode2023.Test + +open System +open AdventOfCode2023 +open NUnit.Framework +open FsUnitTyped +open System.IO + +[] +module TestDay6 = + + let sample = Assembly.getEmbeddedResource typeof.Assembly "day6.txt" + + [] + let part1Sample () = + sample |> Day6.part1 |> shouldEqual 0 + + [] + let part2Sample () = + sample |> Day6.part2 |> shouldEqual 0 + + [] + let part1Actual () = + let s = + try + File.ReadAllText (Path.Combine (__SOURCE_DIRECTORY__, "../../inputs/day6.txt")) + with + | :? DirectoryNotFoundException + | :? FileNotFoundException -> + Assert.Inconclusive () + failwith "unreachable" + + Day6.part1 s |> shouldEqual 0 + + [] + let part2Actual () = + let s = + try + File.ReadAllText (Path.Combine (__SOURCE_DIRECTORY__, "../../inputs/day6.txt")) + with + | :? DirectoryNotFoundException + | :? FileNotFoundException -> + Assert.Inconclusive () + failwith "unreachable" + + Day6.part2 s |> shouldEqual 0 diff --git a/AdventOfCode2023.FSharp/Test/samples/day6.txt b/AdventOfCode2023.FSharp/Test/samples/day6.txt new file mode 100644 index 0000000..f756727 --- /dev/null +++ b/AdventOfCode2023.FSharp/Test/samples/day6.txt @@ -0,0 +1,33 @@ +seeds: 79 14 55 13 + +seed-to-soil map: +50 98 2 +52 50 48 + +soil-to-fertilizer map: +0 15 37 +37 52 2 +39 0 15 + +fertilizer-to-water map: +49 53 8 +0 11 42 +42 0 7 +57 7 4 + +water-to-light map: +88 18 7 +18 25 70 + +light-to-temperature map: +45 77 23 +81 45 19 +68 64 13 + +temperature-to-humidity map: +0 69 1 +1 0 69 + +humidity-to-location map: +60 56 37 +56 93 4