From ee5106524fee9d4d40761b85090b0987c41879c1 Mon Sep 17 00:00:00 2001 From: Patrick Stevens Date: Mon, 6 Dec 2021 20:29:21 +0000 Subject: [PATCH] Day 6 (#2) --- AdventOfCode2021/AdventOfCode2021.fsproj | 6 + AdventOfCode2021/Day6.fs | 61 ++ AdventOfCode2021/Program.fs | 3 + Inputs/Day2.txt | 1000 ++++++++++++++++++++++ Inputs/Day3.txt | 1000 ++++++++++++++++++++++ Inputs/Day4.txt | 601 +++++++++++++ Inputs/Day5.txt | 500 +++++++++++ Inputs/Day6.txt | 1 + Test/Test.fsproj | 1 + Test/TestDay6.fs | 14 + 10 files changed, 3187 insertions(+) create mode 100644 AdventOfCode2021/Day6.fs create mode 100644 Inputs/Day2.txt create mode 100644 Inputs/Day3.txt create mode 100644 Inputs/Day4.txt create mode 100644 Inputs/Day5.txt create mode 100644 Inputs/Day6.txt create mode 100644 Test/TestDay6.fs diff --git a/AdventOfCode2021/AdventOfCode2021.fsproj b/AdventOfCode2021/AdventOfCode2021.fsproj index 68e16ba..e4113af 100644 --- a/AdventOfCode2021/AdventOfCode2021.fsproj +++ b/AdventOfCode2021/AdventOfCode2021.fsproj @@ -11,7 +11,13 @@ + + + + + + diff --git a/AdventOfCode2021/Day6.fs b/AdventOfCode2021/Day6.fs new file mode 100644 index 0000000..01472f6 --- /dev/null +++ b/AdventOfCode2021/Day6.fs @@ -0,0 +1,61 @@ +namespace AdventOfCode + +open System.Collections.Generic +open AdventOfCode.Internals + +[] +module Day6 = + + let input () = + Utils.readResource "Day6.txt" + |> List.exactlyOne + |> fun s -> s.Split ',' + |> Array.map int + |> Array.toList + + // The answer is defined by the following relation: + // g(days) = (if days > 7 then g(days - 7) else 1) + (if days > 9 then g(days - 9) else 1) + // where g is the number of fish given that the only existing fish is on day 0 of its cycle (that is, it's about + // to spawn). + + /// Memoise an arbitrary recursive function, expressed in a form that takes an explicit + /// `recurse` function argument. + /// (I did this for fun.) + let memoise (f : ('a -> 'b) -> 'a -> 'b) : 'a -> 'b = + let d = Dictionary<'a, 'b> () + + let rec answer (a : 'a) = + match d.TryGetValue a with + | false, _ -> + let result = f answer a + d.Add (a, result) + result + | true, v -> v + + f answer + + /// (If you don't want to memoise it, just don't!) + let resolveUnmemoised (f : ('a -> 'b) -> 'a -> 'b) : 'a -> 'b = + let rec answer a = f answer a + f answer + + let g : int -> uint64 = + let go (recurse : int -> uint64) (i : int) = + if i > 9 then + recurse (i - 9) + recurse (i - 7) + elif i > 7 then + recurse (i - 7) + 1UL + else + 2UL + + memoise go + + let part1 () = + input () + |> List.map (fun i -> g (80 - i)) + |> List.sum + + let part2 () = + input () + |> List.map (fun i -> g (256 - i)) + |> List.sum diff --git a/AdventOfCode2021/Program.fs b/AdventOfCode2021/Program.fs index f499b5e..bc0ea35 100644 --- a/AdventOfCode2021/Program.fs +++ b/AdventOfCode2021/Program.fs @@ -7,6 +7,9 @@ module Program = | "1" -> printfn $"{Day1.part1 ()}" printfn $"{Day1.part2 ()}" + | "6" -> + printfn $"{Day6.part1 ()}" + printfn $"{Day6.part2 ()}" | s -> failwithf $"Unexpected argument: %s{s}" 0 diff --git a/Inputs/Day2.txt b/Inputs/Day2.txt new file mode 100644 index 0000000..f34b6f0 --- /dev/null +++ b/Inputs/Day2.txt @@ -0,0 +1,1000 @@ +forward 9 +down 3 +down 8 +forward 2 +up 3 +forward 5 +up 8 +down 2 +down 5 +up 7 +down 9 +forward 4 +up 5 +down 9 +forward 2 +forward 2 +forward 8 +down 6 +forward 2 +up 9 +up 5 +down 2 +forward 5 +down 8 +forward 3 +up 4 +forward 5 +forward 7 +down 8 +down 6 +up 7 +down 3 +forward 4 +up 8 +down 5 +down 3 +down 6 +down 8 +forward 1 +forward 9 +forward 4 +up 7 +down 4 +forward 7 +forward 3 +forward 9 +down 1 +down 3 +up 9 +down 3 +forward 9 +up 6 +up 9 +down 8 +up 3 +down 1 +up 8 +down 8 +down 2 +down 4 +down 4 +up 3 +down 6 +down 1 +down 3 +forward 1 +up 5 +forward 5 +forward 8 +down 2 +forward 6 +forward 2 +up 7 +forward 6 +down 8 +forward 6 +forward 5 +up 9 +forward 5 +up 5 +forward 9 +down 2 +down 4 +down 3 +down 8 +forward 9 +forward 6 +forward 2 +up 7 +down 7 +up 3 +forward 4 +forward 5 +down 7 +forward 5 +up 9 +forward 6 +forward 6 +forward 1 +down 6 +forward 9 +up 2 +down 7 +down 8 +down 6 +up 5 +down 8 +down 8 +forward 7 +down 6 +up 5 +down 9 +down 3 +forward 2 +down 4 +forward 8 +down 5 +up 5 +forward 7 +up 2 +up 2 +down 4 +forward 4 +down 5 +up 8 +down 2 +forward 4 +down 9 +forward 8 +down 5 +down 6 +down 7 +up 7 +up 5 +up 7 +forward 7 +forward 8 +down 2 +forward 3 +down 2 +down 7 +down 4 +down 2 +forward 3 +forward 5 +down 3 +down 7 +up 7 +down 7 +up 5 +forward 1 +down 8 +down 2 +up 4 +up 5 +down 8 +forward 9 +down 3 +down 9 +forward 8 +forward 1 +forward 1 +down 2 +up 9 +down 2 +up 8 +down 6 +up 8 +forward 7 +down 5 +forward 7 +down 8 +forward 8 +down 7 +up 9 +up 2 +up 6 +down 5 +down 9 +forward 2 +up 3 +down 4 +up 5 +up 4 +down 9 +forward 7 +forward 7 +down 3 +forward 4 +forward 9 +up 8 +forward 3 +down 1 +forward 2 +down 7 +down 3 +down 7 +down 7 +forward 8 +forward 4 +forward 7 +up 1 +down 4 +up 9 +down 2 +down 1 +forward 6 +down 3 +forward 7 +forward 8 +up 9 +up 2 +up 2 +forward 7 +up 2 +up 5 +forward 5 +down 3 +forward 8 +forward 1 +up 4 +down 6 +down 5 +forward 4 +up 9 +forward 8 +up 4 +down 8 +down 3 +down 3 +down 7 +forward 2 +forward 4 +down 9 +down 7 +down 2 +up 3 +up 3 +forward 8 +forward 7 +forward 8 +down 5 +up 5 +forward 3 +forward 6 +up 7 +up 1 +forward 2 +forward 5 +down 5 +forward 8 +down 2 +down 4 +forward 2 +down 7 +down 3 +down 5 +forward 9 +down 7 +down 8 +up 1 +up 2 +down 8 +forward 7 +forward 8 +down 8 +forward 5 +up 7 +forward 3 +up 2 +down 7 +forward 1 +down 2 +up 7 +up 4 +down 2 +forward 1 +up 5 +forward 2 +up 2 +forward 3 +forward 9 +forward 2 +forward 8 +forward 2 +up 7 +down 8 +down 7 +forward 2 +forward 7 +down 1 +forward 2 +up 1 +up 6 +down 3 +down 6 +forward 7 +down 4 +forward 5 +forward 6 +up 3 +forward 3 +down 6 +forward 8 +up 8 +forward 4 +down 3 +forward 3 +down 4 +down 7 +forward 9 +forward 2 +up 2 +forward 8 +down 6 +forward 6 +down 9 +down 9 +forward 8 +down 1 +forward 9 +down 1 +down 6 +down 8 +down 5 +down 5 +forward 3 +forward 3 +down 2 +down 5 +forward 9 +down 2 +down 8 +down 3 +forward 9 +up 2 +down 4 +down 9 +forward 9 +forward 1 +forward 5 +up 9 +down 1 +down 6 +forward 6 +forward 5 +forward 8 +down 2 +forward 8 +down 4 +down 2 +down 6 +down 6 +up 3 +up 8 +forward 1 +down 1 +up 8 +down 3 +down 4 +up 9 +up 1 +down 7 +down 7 +up 1 +up 2 +forward 5 +up 8 +forward 2 +down 3 +forward 1 +up 5 +forward 6 +forward 2 +down 6 +up 2 +forward 2 +forward 1 +down 3 +forward 4 +up 8 +forward 5 +down 4 +forward 2 +down 8 +down 7 +up 7 +down 8 +forward 1 +down 4 +up 9 +down 6 +up 6 +up 6 +down 2 +forward 1 +forward 8 +down 6 +up 3 +down 7 +forward 9 +up 1 +up 4 +forward 7 +down 7 +forward 1 +down 6 +down 4 +down 7 +down 8 +down 8 +forward 4 +down 6 +down 6 +down 5 +forward 6 +up 9 +up 3 +down 4 +forward 8 +down 7 +forward 6 +up 3 +forward 1 +forward 1 +down 8 +forward 7 +forward 4 +forward 6 +up 1 +forward 7 +up 8 +forward 2 +forward 6 +forward 8 +down 9 +down 8 +up 9 +up 4 +up 2 +forward 2 +forward 8 +up 2 +forward 3 +forward 2 +up 2 +up 5 +up 8 +forward 4 +forward 8 +forward 3 +up 5 +down 1 +forward 2 +down 7 +down 8 +forward 3 +up 1 +forward 5 +forward 7 +forward 9 +up 7 +forward 4 +down 4 +up 2 +forward 4 +forward 5 +forward 3 +up 9 +forward 6 +forward 8 +down 9 +down 1 +forward 1 +down 5 +down 2 +forward 9 +down 2 +up 9 +down 1 +forward 5 +forward 8 +up 2 +forward 6 +down 4 +down 9 +forward 4 +forward 1 +down 3 +down 3 +up 5 +forward 5 +down 6 +forward 3 +down 2 +forward 8 +down 7 +down 2 +down 1 +forward 2 +up 5 +forward 9 +forward 3 +forward 5 +down 4 +up 7 +forward 6 +down 3 +forward 1 +forward 7 +forward 1 +up 4 +down 2 +down 7 +up 9 +forward 9 +down 8 +down 1 +up 2 +down 3 +forward 7 +down 8 +down 5 +down 5 +up 8 +forward 1 +down 5 +forward 8 +up 7 +down 1 +forward 9 +down 4 +forward 8 +forward 5 +forward 7 +forward 8 +forward 3 +up 9 +forward 3 +down 7 +down 5 +up 8 +forward 3 +up 6 +forward 8 +up 3 +down 5 +forward 5 +forward 6 +forward 4 +forward 3 +forward 8 +up 9 +forward 2 +down 6 +down 4 +down 5 +forward 7 +down 2 +up 5 +forward 2 +forward 5 +down 9 +forward 8 +down 8 +forward 6 +down 9 +down 7 +up 9 +forward 3 +forward 3 +up 5 +down 2 +forward 5 +down 6 +down 6 +down 2 +down 3 +down 4 +forward 7 +up 1 +down 7 +forward 7 +up 1 +forward 3 +up 6 +down 7 +down 5 +forward 9 +forward 2 +down 5 +forward 9 +down 5 +forward 9 +forward 1 +down 4 +forward 9 +down 5 +forward 8 +down 6 +down 4 +down 5 +forward 9 +down 1 +forward 6 +forward 9 +down 1 +down 1 +up 2 +forward 5 +forward 3 +down 4 +up 8 +forward 8 +down 2 +forward 3 +forward 1 +down 7 +forward 6 +forward 5 +up 7 +up 8 +down 5 +up 3 +down 8 +forward 6 +forward 5 +forward 6 +up 1 +up 8 +up 7 +down 5 +forward 3 +forward 9 +up 9 +up 4 +up 7 +up 8 +forward 7 +forward 3 +forward 9 +down 7 +forward 3 +down 6 +forward 9 +down 1 +forward 3 +down 1 +forward 8 +forward 7 +down 2 +forward 1 +forward 6 +forward 7 +down 3 +down 2 +down 1 +forward 7 +forward 4 +down 6 +up 4 +forward 4 +forward 9 +forward 3 +down 1 +up 2 +down 3 +down 5 +forward 7 +forward 5 +up 1 +down 2 +down 3 +down 8 +forward 1 +down 4 +forward 5 +down 5 +up 6 +down 6 +down 8 +forward 1 +forward 9 +up 5 +forward 2 +down 9 +down 5 +down 1 +down 4 +down 9 +down 8 +forward 2 +forward 4 +up 2 +forward 3 +down 8 +down 5 +up 5 +forward 8 +up 2 +down 8 +up 3 +forward 7 +down 7 +forward 8 +down 7 +down 3 +up 6 +forward 5 +up 4 +up 5 +forward 9 +forward 6 +down 9 +forward 5 +down 5 +down 3 +forward 2 +down 1 +up 9 +up 8 +down 6 +down 1 +forward 9 +forward 4 +forward 2 +up 1 +forward 5 +forward 9 +up 5 +forward 8 +forward 4 +down 4 +down 4 +down 2 +forward 1 +forward 7 +down 9 +forward 4 +down 5 +down 4 +down 7 +down 2 +forward 9 +down 3 +forward 6 +forward 3 +down 9 +down 3 +down 4 +down 9 +down 9 +up 6 +down 5 +up 4 +down 1 +down 1 +forward 9 +forward 7 +down 9 +forward 4 +down 8 +down 7 +forward 7 +forward 4 +up 2 +up 5 +forward 2 +forward 7 +down 1 +forward 6 +forward 6 +forward 3 +forward 8 +down 2 +up 2 +forward 7 +up 5 +down 1 +down 5 +forward 8 +down 6 +forward 8 +down 5 +down 4 +down 6 +forward 5 +down 1 +forward 9 +forward 8 +up 5 +down 6 +forward 5 +up 5 +down 4 +forward 1 +down 2 +down 5 +down 3 +forward 2 +down 9 +forward 1 +forward 1 +forward 1 +forward 8 +forward 2 +down 8 +down 6 +up 1 +forward 6 +down 3 +down 4 +up 9 +down 3 +down 3 +up 7 +down 4 +forward 4 +forward 9 +down 3 +down 8 +forward 5 +down 3 +down 6 +down 7 +forward 1 +up 2 +forward 8 +down 1 +down 4 +up 9 +forward 9 +up 4 +up 2 +forward 3 +forward 4 +down 2 +down 2 +down 6 +forward 6 +forward 8 +down 6 +up 6 +down 5 +forward 1 +down 4 +up 9 +forward 1 +forward 3 +down 1 +down 4 +up 6 +forward 5 +forward 6 +up 9 +up 9 +down 2 +up 6 +forward 1 +forward 2 +forward 3 +forward 3 +forward 6 +up 2 +down 8 +down 9 +forward 7 +up 1 +up 3 +down 2 +forward 3 +down 8 +forward 9 +down 3 +forward 6 +up 2 +forward 7 +down 2 +forward 5 +down 4 +down 2 +up 8 +forward 3 +forward 5 +forward 9 +forward 5 +forward 3 +up 9 +down 7 +forward 4 +forward 2 +forward 7 +down 5 +up 6 +up 6 +forward 8 +down 2 +forward 1 +up 1 +up 9 +up 8 +up 3 +up 4 +down 2 +up 7 +down 4 +up 5 +down 1 +up 9 +down 5 +down 9 +down 4 +up 2 +down 8 +up 2 +up 7 +up 9 +forward 4 +forward 2 +forward 1 +forward 6 +forward 8 +up 5 +forward 5 +forward 5 +down 4 +up 6 +forward 3 +down 9 +down 7 +forward 4 +down 3 +up 1 +forward 4 +down 2 +down 6 +up 3 +up 1 +down 9 +down 7 +down 9 +forward 3 +forward 8 +down 8 +up 7 +up 6 +down 2 +down 9 +down 1 +down 9 +forward 6 +up 4 +down 3 +forward 5 +up 3 +up 9 +up 8 +forward 6 +down 8 +forward 6 +forward 6 +forward 5 +up 4 +down 4 +up 6 +up 4 +forward 2 +down 5 +forward 9 +up 7 +up 6 +down 4 +forward 7 +forward 6 +up 2 +down 8 +down 6 +forward 5 +up 2 +forward 5 +forward 1 +up 9 +down 8 +forward 7 +up 4 +forward 8 +down 4 +forward 3 +forward 3 +down 9 +forward 4 +forward 9 +up 8 +forward 7 +forward 3 +forward 9 +forward 4 +up 3 +forward 2 +forward 7 \ No newline at end of file diff --git a/Inputs/Day3.txt b/Inputs/Day3.txt new file mode 100644 index 0000000..319fb08 --- /dev/null +++ b/Inputs/Day3.txt @@ -0,0 +1,1000 @@ +011001101000 +010101111100 +000000111101 +001001001010 +010011000001 +111111001110 +001011101111 +110011010110 +100011111110 +101110000111 +000011011100 +001111111011 +011101001111 +111001010110 +011100011110 +001011000010 +100010111011 +000101010011 +000001101100 +010001011110 +100010101000 +111101011101 +110000100001 +011011010101 +110101100110 +001101101010 +111010110011 +011111111000 +010001010001 +000001010101 +001001011011 +101111110011 +100011010001 +111010010111 +011010011010 +101111011011 +101010111100 +001111100110 +010100110111 +010110101100 +000111110101 +111110101110 +111010000000 +011111111010 +000101011100 +000001010110 +101000100101 +100001011001 +011101110010 +110111100100 +110011001011 +000010001111 +000100010101 +110111001100 +010001100000 +101111110101 +111000011011 +000100001001 +101101011101 +001001011110 +101100111010 +011011000010 +110010010111 +101001010101 +000000101110 +000011011111 +010001000011 +011011001010 +101101111011 +100010001010 +001001011100 +010011110001 +000001111101 +100001000101 +011101011010 +000010101110 +001010101010 +101010011011 +00111001011 +000011101000 +110100101001 +000111111010 +100111100101 +111010001111 +111100110001 +011111101010 +110101000011 +001111101100 +101000100110 +100101100011 +000011010011 +010101011111 +010000110111 +110011001001 +101011011101 +001011100001 +000001100101 +001001001101 +001101001111 +001110110001 +010110101110 +001100110110 +001000001111 +101101001001 +011111011010 +111111101110 +111001100000 +100101011001 +010101100101 +100000110100 +011001001000 +111100110011 +111011110001 +110011111010 +001101001010 +111110011111 +110101100000 +111001000101 +010001111110 +111011010100 +110011010111 +100100110111 +111111011010 +011110101111 +001011110010 +010111011010 +011101101101 +011010101110 +011000110001 +010110101010 +011110010000 +111111011100 +111011000101 +100110101110 +010101100010 +101100011110 +000010110101 +010010011110 +110000000110 +011111010101 +000110110011 +101011000010 +000011000111 +101011010000 +101101101001 +010000101010 +101001001001 +111010110110 +111000111101 +000001010111 +101110001100 +110010110001 +100000110001 +101100101011 +100000111001 +010110100111 +101011001111 +101010111001 +010010110000 +001110010011 +010101101110 +011000010100 +100111111000 +011110100011 +110100100111 +101110101000 +101010101111 +101001000000 +111010000110 +101001000100 +010001100111 +011011010001 +000101010101 +010110000011 +100000101110 +110010001000 +111000100001 +001001101001 +110010001001 +100001111011 +101010010100 +110011100101 +010101100001 +011101010100 +110100101111 +110100001111 +011000101101 +001011101100 +010010010101 +011011111010 +010101000001 +100101100000 +101001111101 +010000000100 +110000110100 +000000001101 +100100111101 +111100110010 +001011001111 +101100001011 +001111010001 +101100011001 +100110110001 +010111000011 +011010110101 +100111100011 +000111110011 +010101111101 +010010000000 +011000011011 +001100011001 +001011001001 +101110101101 +101111110111 +101011100100 +000100110100 +110000101111 +011001111101 +000000000111 +111001001010 +110100001100 +000001001110 +111001101011 +100011011111 +110000001000 +110101011011 +001010000101 +001011111001 +011011111100 +010100110101 +110101111001 +010110010101 +010010001000 +001001110111 +011111111111 +100011100010 +000110001101 +011111010000 +010111110010 +110010100011 +101011110101 +110011011110 +010000000101 +011101100100 +110010011100 +011101101100 +000010001001 +000011101101 +000101100011 +010111111000 +010111100111 +010101000101 +110111100010 +110001101011 +111010100000 +101010101011 +011101010101 +000100110111 +000111100111 +000100111111 +111100001001 +010000100001 +110101011111 +100010000100 +000011011000 +111011110000 +101000011100 +110001001010 +001000010101 +110110000101 +100000011110 +001101111010 +010111001100 +111011111100 +100101001000 +010111101001 +110010010000 +110011010000 +000010100111 +100101111101 +110101100010 +110100011110 +101111010110 +110001001111 +011101000111 +001011001101 +110001000010 +011110100110 +000101100110 +000110111110 +001010111010 +100110000111 +001000010110 +100001110100 +000111000110 +101100011100 +110100110110 +100011010111 +000101110001 +001010010110 +101000000101 +100101101000 +000111111110 +010010010111 +110010001010 +001100110111 +110110110101 +011111011101 +110101100111 +100100100111 +011011000000 +111101001100 +011101000011 +011101001010 +101101101101 +100100110010 +001000000010 +010010001010 +111110111001 +000111010001 +011100111111 +011111011001 +110101000000 +011110000010 +001111010110 +010011111111 +110101111011 +101110111111 +001001100001 +011100111100 +110111001110 +011000000111 +001100010111 +001011010010 +010010001011 +101110000011 +100000101000 +100010100100 +000111011101 +001000111011 +010010101010 +111011010011 +110100010001 +011110001110 +111010110001 +010000010111 +010110101101 +111101100001 +110011100110 +000101111110 +110010101010 +000001010000 +001101111101 +011011110100 +110001010101 +011001000001 +001101101100 +100011011011 +101011100010 +011011100101 +100110110101 +110111001011 +000100101011 +001101010100 +010000011100 +101100111011 +011001011100 +011011010100 +011100110001 +010010110011 +101000110011 +111101010001 +111000000100 +101101100111 +001011111000 +010100000111 +011110101101 +111011101100 +110101110001 +001110010000 +010010000111 +101001111011 +100100111100 +000101101101 +101111110100 +100000101111 +011001110000 +011110011001 +000101010110 +000000000101 +110010001100 +000111100100 +010010011010 +001111110100 +011010001010 +101100101111 +011001001011 +100011111101 +101100000001 +100100101010 +000000000100 +111001110101 +000010011110 +110110100100 +111010010001 +011101010010 +011100101111 +010110000010 +010000110101 +110101010011 +001110011110 +111010011010 +000110101000 +001111000001 +010110110000 +001100110001 +110011011111 +000100111011 +110001000111 +011010111101 +000010100110 +010100101001 +010001000010 +000101110101 +101100110100 +111000110010 +111011110010 +010111001111 +100000101101 +101100001010 +100100001001 +111111111101 +001010101001 +000011011010 +101011010010 +111001000110 +111100010011 +111010011100 +100000111100 +011100001101 +110001101000 +101111011001 +001100001000 +101110010111 +011111100000 +001011100000 +101011101010 +110010101111 +001110000101 +001111011011 +011110101000 +111000001000 +010100111010 +010010111001 +110000110001 +110011000101 +001110000100 +010100101101 +101010110100 +100001010100 +100011010011 +100000010010 +011101010111 +001000010111 +001100111100 +000110100011 +101111101010 +010001010000 +001100100110 +111001111110 +101000001001 +000010110010 +110111101011 +101011000011 +001000111111 +100011001101 +011010010101 +110011100011 +110010011010 +110001010100 +100010111101 +101110000110 +010111001011 +110011011100 +110001100011 +000100011010 +111011100010 +011110110011 +011111100010 +000100001101 +100010010000 +110000000011 +101001011000 +101100110101 +001010101011 +011001011010 +001010001001 +001111011100 +111100010001 +100011010110 +001000110111 +011011010011 +001100000000 +100001111100 +000011110101 +100010000111 +000010110011 +000010111110 +011110000101 +010000001011 +001111110010 +001110001001 +011101111111 +010110110001 +110000000111 +010101011101 +010111001001 +100100010010 +101001101110 +100001001010 +010001011101 +100111010101 +100000101011 +000100101001 +110111001001 +100100000001 +010111010010 +111101111011 +011010010010 +111101101000 +100110111101 +010010001001 +100111011000 +110101111111 +111010101110 +010011110010 +101001100100 +010000101111 +010011001111 +110010011111 +101110100111 +011010100101 +111111001001 +010101100110 +101001001101 +001000101010 +010001001100 +101001101000 +110110100000 +011101000101 +100101010101 +101110111011 +010010101001 +110100011000 +110101111010 +110000100000 +010011101101 +111011001101 +100100011101 +110100010111 +011100110100 +010111011001 +011101010001 +101000000010 +100111111001 +100100001000 +001000001000 +001000000100 +011110110010 +010101010011 +101101101100 +110111111001 +010000010011 +100010100001 +000110101111 +101010101101 +100101111100 +000111010110 +001101101111 +110010000011 +110100001110 +011111111101 +111011010101 +001010100010 +100010100110 +101101110111 +010110011011 +111001110110 +011110101001 +110011100111 +000100111101 +101100011000 +101101001010 +011111100111 +010000011000 +100001100110 +000000101101 +000111010010 +110000001100 +111111101010 +001000100010 +111111111011 +001011100111 +000101110010 +010111110011 +010000011001 +111001111101 +110100001101 +010001101000 +110000101011 +011011000110 +110010111011 +100111101010 +011001101011 +001101010011 +011000100101 +110111101111 +001000100001 +010010111101 +101101101011 +011111011100 +111111010110 +001110000000 +101011110010 +011101011111 +001001101101 +011101110000 +011100011101 +111101001101 +010111010101 +010111101010 +001000101101 +100000000011 +111110101111 +000111101111 +001110010101 +101111001101 +111100110000 +110010100000 +011101110100 +100011001111 +010110001001 +111100101100 +101001110100 +011010010111 +011000100100 +001100110100 +001001111000 +001000000111 +110100000111 +011000001011 +001011000000 +110110110111 +000010111011 +001001000011 +000011100111 +110011001111 +010000111101 +001110100010 +000011110001 +011001111011 +110111000001 +111111000001 +011001100110 +110010101100 +111101010100 +010010000101 +000011011011 +110110010001 +010111111010 +010000010101 +110000011010 +110001101110 +000110101011 +101111000111 +001101100000 +010100000001 +111110001001 +000011110000 +111100111001 +000001001011 +011000010110 +000001000100 +011100111000 +001011111110 +011100000000 +000101001011 +111111110110 +111010011000 +001000111101 +011001110010 +001101011100 +100110001111 +110110111010 +001110101100 +010000101100 +010011000011 +100101110010 +000000111010 +000001111001 +111101011000 +101000011001 +111110000101 +101111111011 +100110111110 +000110010110 +011011101110 +100000010111 +110111001000 +000010101010 +001010011011 +101010101010 +101100000000 +000101101011 +010110100110 +110010010100 +001010110101 +001110000001 +010001101010 +111111110100 +001101110110 +111101010111 +101011101100 +110001101010 +100111010100 +101101111001 +001011100110 +010010001111 +100101110110 +110011000010 +001111010100 +000101011011 +110000000001 +011011001001 +001001011111 +000111011111 +100001001100 +111011010010 +010101011001 +000001110100 +000010100101 +110110010010 +100010111110 +011110111110 +000001101000 +001011000110 +000010001010 +101101010100 +011011010000 +000011111000 +101000001110 +011110101011 +110100111000 +000011000010 +111111010001 +011101110001 +100000111101 +110100101101 +110000100101 +011001110110 +110001010010 +010010110110 +011110001000 +111010110100 +101111110010 +110000110111 +111101110100 +110111101110 +100110010111 +001001100011 +001110111000 +101110100100 +010000101101 +010111100101 +011001100010 +011100000101 +101001111001 +100011001010 +100010000010 +100101000010 +111111100101 +100001101110 +101001010110 +100000100011 +100000011000 +000110000001 +000000011011 +011000110101 +011010111011 +111110000001 +001001110100 +001011011110 +110111010110 +011101110101 +101111000101 +100001010010 +000001111000 +001110010100 +111111101100 +001011010001 +111001111001 +100101101010 +111000000010 +010101001010 +001010000010 +101011000110 +110011001010 +001000011000 +001010010011 +110000111101 +001001100000 +111101100111 +011001001100 +001100111011 +100001010101 +111010100011 +111000011111 +001000000000 +101110011001 +000000000011 +111011000111 +011010100011 +110000110000 +000011001001 +011000010001 +011110000011 +011101000000 +010100110011 +010110010001 +111001101111 +110111110100 +110111110110 +100111001011 +111100110110 +101010001110 +100110000010 +011011100001 +001101010010 +010001110011 +010011110000 +110010100111 +001101110100 +101010101100 +110000111000 +011101110110 +101011110001 +110011000000 +010000011011 +001011010000 +010111010001 +010100010101 +110101000100 +010011101011 +010110111001 +101111000011 +011011100000 +000010100010 +001100110000 +110000111001 +100100100000 +001101000010 +100000010011 +100010011110 +110101010000 +000100000101 +000111000001 +000001111011 +100111011101 +110111110111 +011101111000 +001001000110 +100110010011 +100011100111 +010011010000 +010011010111 +001101100101 +010000010110 +000101010001 +011111010100 +010010111100 +001010101110 +110000001011 +011001010101 +000001111110 +010111111011 +011110010010 +001001101100 +101100101000 +100000001110 +110001001110 +011110111011 +001000110011 +111100110111 +001101100111 +000110110000 +000010011011 +100110111010 +111110001100 +000000101100 +110000111100 +100110111100 +110111111100 +110000111010 +100001100100 +100010011010 +011011100110 +110100010110 +001001010101 +000110101110 +101001100000 +100010110011 +111000001101 +101110100110 +100010111100 +000101110110 +000011011001 +000001010100 +101100111001 +011101111101 +011110011000 +111010001011 +010101110101 +100001100101 +100110100010 +100110011000 +001010100110 +011001010111 +111111001010 +111111001000 +111110100101 +000101000011 +110101101111 +110100010010 +011100000010 +001000010100 +101100000111 +001010111111 +101001010011 +101011001000 +001100000011 +010010101000 +101101111101 +101001010010 +100101111011 +101110101110 +100000100100 +000000000010 +011101100011 +110000110110 +101000110000 +111011111010 +010111000110 +001111110110 +100111110110 +100110011101 +000000001000 +101110111010 +000101011000 +001011100011 +011101100111 +000011000011 +000101011001 +110101101101 +101000001111 +111000010101 +000011100010 +011010111001 +001100100101 +010111111101 +010101111011 +000101001100 +101010000111 +111100111111 +100000000111 +110111110011 +000110110111 +010011011111 +100110010100 +000100111110 +001000111001 +011111000001 +001010100101 +101010001100 +011100001011 +000101001111 +010010101111 +101000111011 +001101000001 +100100100001 +100010101111 +100111111110 +011011111001 +101000000001 +111001101101 +101011010101 +111111100110 +001010010100 +011101111001 +001100100000 +101001110110 \ No newline at end of file diff --git a/Inputs/Day4.txt b/Inputs/Day4.txt new file mode 100644 index 0000000..29e37f5 --- /dev/null +++ b/Inputs/Day4.txt @@ -0,0 +1,601 @@ +27,14,70,7,85,66,65,57,68,23,33,78,4,84,25,18,43,71,76,61,34,82,93,74,26,15,83,64,2,35,19,97,32,47,6,51,99,20,77,75,56,73,80,86,55,36,13,95,52,63,79,72,9,10,16,8,69,11,50,54,81,22,45,1,12,88,44,17,62,0,96,94,31,90,39,92,37,40,5,98,24,38,46,21,30,49,41,87,91,60,48,29,59,89,3,42,58,53,67,28 + +31 23 52 26 8 +27 89 37 80 46 +97 19 63 34 79 +13 59 45 12 73 +42 25 22 6 39 + +27 71 24 3 0 +79 42 32 72 62 +99 52 11 92 33 +38 22 16 44 39 +35 26 76 49 58 + +39 19 82 53 57 +52 98 69 77 23 + 1 40 18 66 83 +34 85 28 48 16 +15 93 38 96 27 + +74 50 88 84 99 +34 2 11 25 17 +57 4 19 83 1 +59 77 42 36 33 +73 22 23 37 55 + +98 91 56 84 78 +45 21 24 83 40 +46 58 8 67 4 +33 97 55 7 86 + 2 68 64 27 69 + +68 29 14 49 26 + 4 21 87 71 32 +58 5 17 46 93 +45 96 8 83 2 +78 91 9 20 42 + +49 81 19 48 37 +38 23 45 82 92 +93 99 67 66 42 +40 74 25 56 16 +21 47 26 75 61 + +53 66 72 30 34 +55 82 77 6 92 +60 56 8 22 88 + 5 71 49 29 74 +28 2 32 84 73 + +52 31 24 68 41 +48 82 19 29 65 +51 91 97 39 80 + 3 55 43 40 38 +20 89 53 45 75 + +29 74 19 89 18 +32 88 93 46 63 +91 4 94 64 5 +57 54 49 36 40 +97 81 39 77 1 + + 7 57 94 84 39 +92 3 28 15 75 +88 45 65 81 63 +86 4 89 37 71 + 8 13 66 42 85 + +60 66 35 47 98 +96 27 40 51 39 + 3 64 25 28 74 +58 17 97 59 29 +95 31 18 44 37 + + 3 31 97 85 71 +79 82 22 61 98 +87 14 17 66 75 +36 89 88 83 63 +44 8 81 25 48 + +73 84 28 90 94 +25 19 44 10 23 + 8 59 17 9 93 +20 77 97 64 6 +98 82 27 70 91 + +18 51 16 99 2 +58 22 89 13 19 +39 66 91 8 32 +49 24 85 94 42 +45 70 10 86 4 + +23 81 66 13 34 +25 80 97 5 42 +79 35 2 78 9 + 0 6 91 94 45 +21 90 76 50 56 + +50 92 2 96 75 +85 82 80 97 31 +61 35 55 27 56 +74 42 9 29 90 +86 15 88 47 1 + +18 20 54 92 62 +45 22 32 61 75 + 1 38 50 81 42 +82 4 21 77 65 +27 51 56 39 48 + +36 10 62 28 70 +94 99 34 54 6 +15 1 41 13 12 +92 52 2 63 82 +90 64 29 69 32 + +23 77 33 90 17 +45 78 5 67 28 +57 73 89 81 21 +49 64 37 15 14 + 7 59 4 43 16 + +81 92 25 28 90 +93 72 43 94 26 +24 9 13 74 10 +21 2 36 32 51 +87 97 55 86 71 + +82 71 99 17 90 +69 95 65 55 10 + 9 92 39 62 78 +59 13 61 24 44 + 8 31 58 0 57 + +17 83 55 99 27 +79 4 33 76 7 +81 43 44 49 72 + 2 48 97 20 77 +47 60 35 16 63 + +93 95 94 1 98 +61 57 84 55 22 +85 40 65 46 59 +21 15 63 77 7 +13 99 49 3 96 + + 8 21 14 45 41 +65 63 82 62 28 +91 44 22 79 96 +20 75 86 3 26 +74 11 42 59 36 + + 5 52 43 92 99 +46 63 10 45 81 +13 66 21 32 89 +25 28 96 40 88 +27 18 31 73 34 + + 3 26 43 32 36 +68 87 67 65 99 +73 61 20 90 7 +21 52 2 82 10 +58 49 56 16 80 + +97 25 93 63 32 +87 14 5 22 76 +89 92 91 3 51 + 0 24 95 69 20 +96 11 10 1 55 + +95 86 44 75 70 +59 76 45 2 99 + 1 34 71 81 41 +87 14 33 84 96 + 8 38 9 82 68 + +27 71 70 75 76 +25 87 2 79 96 +20 88 50 37 32 +48 94 63 86 22 +15 6 34 78 59 + +30 89 51 31 77 +74 10 86 71 84 +29 54 58 44 5 +11 90 26 50 63 +64 62 20 40 46 + +37 9 46 23 31 +68 21 25 36 90 +17 33 6 50 30 +11 89 20 47 60 +26 59 34 62 77 + +84 52 40 97 7 +88 30 42 58 94 +64 10 2 90 83 +44 35 77 91 47 +14 74 9 78 53 + +86 14 0 39 24 +87 69 58 8 73 +88 74 27 40 51 +63 54 55 93 61 +16 66 15 21 48 + +43 70 9 81 42 +36 54 99 34 95 +98 19 90 25 44 +69 56 18 77 49 +58 16 67 75 57 + +36 44 14 98 23 +31 5 83 46 3 +45 21 41 11 60 +33 81 88 92 65 +13 51 48 59 71 + +12 5 70 87 32 +42 18 90 73 88 +68 29 76 38 55 +67 62 15 77 34 +39 27 51 54 19 + +87 8 92 93 88 +77 54 15 1 43 +35 97 26 21 29 +13 46 96 69 47 +51 38 91 32 63 + +73 99 30 15 16 +42 58 21 88 44 +45 13 27 68 9 +36 6 81 53 5 +78 76 11 60 1 + +57 76 50 78 31 +45 42 68 53 16 + 9 88 89 19 21 +96 61 97 69 34 +98 87 33 82 0 + + 4 16 89 57 64 +46 75 77 65 23 +71 42 96 52 38 + 1 21 93 0 35 +59 80 53 36 58 + +97 62 35 1 88 +98 60 17 45 94 +12 43 65 23 19 +71 52 3 40 59 +50 76 61 20 22 + +92 65 38 93 13 +55 26 10 46 29 +85 23 19 74 34 +60 14 27 36 18 +53 4 52 49 17 + +99 56 93 70 28 +25 0 77 80 57 +91 50 72 76 23 +53 58 95 78 59 +75 85 90 44 9 + +30 8 5 60 6 +28 35 59 70 96 +20 99 98 81 79 +94 78 27 71 4 + 7 34 43 46 51 + +93 65 22 69 33 +92 49 75 35 11 +58 39 62 86 83 +64 4 76 48 82 +74 1 56 95 31 + + 1 78 98 90 55 +80 14 36 99 7 +85 8 10 9 92 +76 11 40 70 62 +43 53 74 35 58 + +46 78 35 28 49 +84 73 65 25 34 +40 59 66 36 67 +16 22 29 0 45 +20 56 39 88 91 + +32 58 35 25 79 +78 94 57 38 14 +89 87 68 48 76 + 7 67 40 51 33 +95 31 43 93 92 + +38 21 82 31 23 +54 16 77 37 42 +73 99 7 34 90 +71 26 5 91 52 +22 27 47 85 62 + + 2 86 28 37 55 + 1 82 9 36 31 +52 98 89 30 60 +13 17 63 38 57 +73 50 42 20 12 + +56 3 67 62 35 +59 39 19 22 27 +21 58 57 41 54 +75 13 82 50 32 +23 5 99 66 10 + + 7 19 45 66 78 +38 57 40 73 87 +58 30 99 53 83 +64 1 8 56 95 +70 77 16 18 82 + +72 83 95 37 35 +54 59 92 21 79 + 7 81 86 29 41 +52 99 42 57 71 + 3 15 75 34 77 + + 7 70 5 69 4 +34 60 40 73 6 +74 54 67 32 38 +93 62 17 51 86 +57 88 99 3 16 + +42 74 11 34 7 +82 47 71 31 58 +69 23 43 4 64 +32 19 98 93 41 +63 97 8 85 48 + +63 54 34 38 86 + 4 27 15 49 0 +61 77 53 98 74 +62 23 88 97 37 +93 28 25 50 13 + +56 82 41 27 79 +23 31 64 7 65 +52 98 93 16 57 +88 49 10 11 62 +43 95 53 51 83 + +41 10 87 54 86 +19 22 13 40 17 +37 27 45 29 63 +83 85 81 90 7 +57 88 47 66 56 + +67 44 54 88 89 +20 46 61 28 92 +86 49 60 83 95 +42 78 97 51 96 +11 62 4 26 31 + +18 68 87 26 70 +62 84 11 33 90 + 0 45 66 83 6 +20 19 27 44 55 +52 8 5 7 3 + +54 94 88 76 92 +13 98 22 33 26 +95 62 53 81 24 +29 69 15 87 25 +61 40 84 90 93 + + 7 31 3 28 46 +20 51 21 18 38 +30 92 39 70 61 +27 88 35 96 74 +23 5 66 11 42 + +40 61 90 57 54 +41 14 99 62 59 +92 10 48 81 52 +22 29 77 18 87 +31 79 25 94 13 + +17 26 44 98 57 +74 83 51 14 11 +76 91 96 64 33 +43 45 92 72 27 +66 3 28 20 40 + +88 82 44 71 55 +83 47 51 76 24 +86 19 42 34 99 +30 31 87 48 62 +98 53 68 9 21 + + 3 31 6 41 61 +24 77 81 96 44 +78 73 1 98 11 +40 80 27 65 92 +62 67 2 30 10 + +78 46 50 65 56 +84 16 32 58 86 +22 12 54 99 35 + 9 43 55 10 94 +66 81 59 92 76 + +78 3 55 23 83 +13 42 94 91 22 +14 37 31 67 71 + 8 61 57 34 43 +74 50 0 39 65 + +78 16 13 91 34 +14 74 86 3 97 +12 89 58 65 51 +29 57 48 44 93 +95 1 42 39 92 + +93 96 16 85 25 +59 3 70 19 17 +21 84 58 38 86 +57 10 35 95 79 +81 44 73 63 9 + +22 1 96 7 93 +40 49 2 4 66 +87 21 17 32 48 +44 28 42 99 26 +69 8 85 86 75 + +21 31 37 87 28 +89 43 74 83 57 +95 29 92 88 35 +94 25 97 81 50 +15 19 73 45 63 + +92 62 67 95 57 +30 8 4 39 64 +99 31 70 63 96 +25 53 24 93 35 +34 51 82 91 28 + +41 30 20 56 46 +16 32 98 60 35 +67 9 43 42 88 +78 90 71 5 29 +49 31 37 63 18 + +80 40 88 5 62 + 3 6 74 71 97 +19 58 63 59 38 +50 64 34 68 45 +25 30 21 33 83 + +10 65 67 17 50 +21 51 18 68 59 +29 78 77 99 76 +62 35 96 7 95 +82 53 42 49 69 + +74 65 89 6 1 +18 30 72 75 24 +60 50 52 55 82 +68 99 4 61 22 + 9 37 84 57 87 + +96 85 56 72 2 + 9 38 98 12 4 +34 45 74 97 86 +18 94 64 70 68 +91 41 58 39 66 + +34 13 26 80 29 + 0 4 21 60 90 +39 73 12 2 19 +64 44 61 88 45 +59 50 8 91 49 + +34 85 55 2 75 +10 15 89 12 63 +90 29 87 73 71 +38 17 84 45 9 +97 98 77 23 61 + +47 43 22 58 1 +63 44 2 94 99 +33 81 51 49 13 +38 86 42 91 23 + 7 67 68 39 84 + + 4 26 12 38 41 +43 16 88 71 99 +50 24 19 77 98 +23 73 44 10 51 +56 42 30 52 59 + +57 16 9 62 27 +26 65 56 10 82 + 0 74 78 12 99 +77 18 38 5 37 + 7 60 40 90 23 + +14 69 18 51 8 +21 79 60 36 12 +68 44 59 45 16 +90 50 85 25 70 +91 31 30 54 26 + +24 40 51 72 63 +31 60 62 25 96 + 9 44 35 28 91 +97 4 34 81 2 +61 68 94 52 86 + + 0 57 95 88 94 +36 38 25 35 19 +13 6 8 61 98 +45 85 86 69 97 +41 32 7 15 59 + +41 82 19 29 34 +44 96 6 91 76 +69 21 32 94 98 + 4 10 88 30 2 + 8 74 56 65 99 + +36 91 73 15 54 +62 55 40 27 44 +11 60 95 61 46 +31 32 21 41 35 +74 86 83 89 79 + + 2 96 94 82 68 +39 83 49 30 15 +62 11 86 99 59 +51 80 12 72 58 +87 66 98 53 29 + +44 71 18 63 85 +11 75 60 66 13 +36 9 94 57 8 +10 12 32 3 86 + 4 29 54 70 21 + +27 33 76 83 67 +77 29 65 39 44 +52 34 25 93 64 +35 4 57 92 84 +41 51 88 96 0 + +21 91 82 3 26 +23 8 36 20 73 +54 39 60 34 57 +49 99 97 69 43 +41 93 95 80 63 + +73 77 4 9 22 +17 33 15 86 79 +38 16 99 98 30 +64 92 76 50 68 +83 85 52 87 88 + +57 53 13 36 76 + 7 10 91 3 22 + 8 84 56 73 59 +62 80 85 38 33 +68 97 47 14 96 + +36 8 98 43 70 +85 95 31 1 51 +33 41 78 89 56 +76 16 15 34 82 +12 18 39 4 3 + +98 49 41 30 95 +68 89 81 48 84 +15 19 90 66 14 +32 1 88 34 64 +73 65 6 20 86 + +22 18 13 74 34 +75 4 60 88 46 +25 97 54 94 91 +42 67 40 11 81 + 5 12 49 48 15 + +82 91 18 73 57 +97 50 34 16 66 +29 43 81 20 15 +19 44 85 4 32 +90 58 39 53 42 + +50 53 83 10 0 +93 16 84 23 13 +89 63 75 69 51 +65 35 67 56 70 + 4 37 29 47 38 \ No newline at end of file diff --git a/Inputs/Day5.txt b/Inputs/Day5.txt new file mode 100644 index 0000000..97eb2b6 --- /dev/null +++ b/Inputs/Day5.txt @@ -0,0 +1,500 @@ +959,103 -> 139,923 +899,63 -> 899,53 +591,871 -> 364,644 +739,913 -> 310,484 +460,309 -> 460,705 +351,389 -> 351,837 +420,55 -> 420,541 +916,520 -> 382,520 +136,604 -> 295,604 +343,59 -> 142,59 +951,206 -> 806,206 +984,950 -> 61,27 +739,388 -> 988,388 +374,370 -> 644,370 +403,504 -> 798,899 +943,535 -> 229,535 +149,227 -> 583,661 +62,126 -> 62,352 +131,391 -> 131,717 +254,944 -> 254,220 +572,111 -> 572,47 +336,249 -> 830,743 +898,858 -> 203,163 +203,320 -> 825,942 +19,318 -> 19,120 +740,432 -> 740,39 +591,383 -> 220,754 +445,592 -> 19,592 +202,370 -> 837,370 +473,916 -> 600,789 +118,955 -> 884,189 +377,376 -> 533,532 +160,264 -> 160,62 +627,572 -> 627,679 +217,690 -> 217,629 +685,323 -> 866,504 +391,309 -> 493,207 +872,776 -> 357,776 +116,326 -> 116,426 +82,900 -> 832,900 +594,862 -> 594,593 +802,636 -> 802,223 +862,226 -> 862,787 +313,573 -> 834,573 +145,631 -> 13,499 +545,433 -> 420,308 +427,623 -> 427,808 +898,120 -> 511,120 +859,811 -> 859,28 +715,958 -> 715,893 +115,234 -> 484,234 +125,253 -> 50,253 +737,265 -> 158,265 +523,965 -> 523,983 +118,51 -> 118,766 +455,774 -> 455,357 +680,881 -> 925,881 +191,186 -> 187,186 +821,629 -> 792,658 +397,906 -> 397,962 +988,811 -> 988,427 +91,733 -> 519,733 +46,172 -> 566,172 +740,619 -> 880,759 +609,465 -> 609,702 +289,211 -> 289,620 +622,135 -> 622,929 +113,53 -> 872,53 +559,713 -> 559,132 +894,237 -> 211,920 +237,259 -> 237,39 +738,542 -> 976,542 +163,34 -> 525,34 +681,672 -> 264,255 +37,827 -> 722,827 +60,803 -> 514,349 +433,866 -> 433,257 +379,493 -> 379,643 +697,588 -> 192,83 +875,646 -> 318,89 +634,983 -> 634,111 +636,69 -> 636,41 +911,780 -> 701,570 +792,71 -> 956,71 +682,338 -> 608,412 +257,768 -> 450,575 +112,25 -> 795,708 +730,86 -> 730,65 +966,785 -> 789,608 +390,263 -> 483,356 +90,852 -> 90,471 +507,914 -> 769,914 +803,535 -> 803,245 +710,787 -> 570,787 +138,842 -> 270,710 +862,988 -> 862,656 +56,408 -> 849,408 +16,10 -> 979,973 +982,14 -> 12,984 +647,915 -> 38,306 +797,487 -> 19,487 +539,933 -> 924,933 +509,734 -> 176,734 +813,505 -> 976,505 +474,987 -> 474,896 +21,200 -> 164,200 +986,973 -> 31,18 +919,830 -> 111,22 +32,574 -> 456,150 +743,595 -> 842,595 +623,306 -> 722,306 +878,367 -> 519,367 +924,221 -> 924,231 +86,950 -> 773,263 +950,248 -> 537,248 +149,155 -> 962,968 +449,568 -> 179,568 +186,304 -> 868,986 +921,320 -> 639,602 +602,262 -> 602,500 +602,33 -> 602,248 +380,731 -> 423,774 +535,110 -> 638,110 +552,317 -> 552,75 +173,667 -> 173,847 +707,480 -> 195,480 +833,398 -> 267,964 +276,716 -> 413,716 +342,816 -> 922,816 +24,184 -> 715,875 +762,330 -> 717,285 +718,886 -> 718,551 +707,834 -> 707,704 +479,578 -> 161,896 +145,297 -> 145,435 +760,651 -> 536,875 +954,629 -> 954,816 +305,949 -> 305,919 +55,132 -> 55,233 +469,85 -> 439,85 +653,990 -> 536,990 +876,531 -> 432,87 +698,207 -> 698,672 +11,70 -> 766,825 +591,357 -> 30,918 +697,987 -> 697,823 +610,903 -> 370,663 +319,678 -> 319,504 +337,150 -> 309,150 +876,57 -> 311,57 +673,268 -> 345,596 +895,364 -> 518,741 +327,662 -> 941,48 +77,709 -> 110,742 +194,78 -> 661,78 +587,24 -> 825,24 +503,317 -> 719,317 +459,632 -> 704,387 +717,292 -> 835,292 +912,927 -> 72,87 +510,527 -> 146,527 +336,771 -> 336,266 +566,961 -> 496,961 +969,335 -> 122,335 +925,443 -> 925,397 +316,812 -> 606,812 +815,795 -> 116,795 +169,36 -> 354,36 +358,274 -> 389,274 +302,147 -> 839,684 +762,372 -> 972,372 +172,721 -> 682,211 +265,150 -> 248,167 +753,559 -> 307,559 +823,121 -> 823,126 +498,856 -> 498,135 +75,977 -> 75,381 +541,297 -> 541,320 +735,108 -> 866,108 +434,907 -> 868,907 +915,959 -> 255,959 +967,666 -> 967,209 +361,600 -> 361,222 +314,580 -> 314,497 +175,989 -> 523,641 +957,97 -> 311,743 +956,227 -> 12,227 +95,364 -> 95,742 +857,141 -> 193,805 +388,651 -> 468,731 +582,177 -> 324,177 +68,272 -> 68,720 +543,490 -> 910,490 +508,281 -> 902,281 +823,380 -> 823,296 +23,10 -> 946,933 +813,70 -> 813,450 +881,893 -> 598,893 +535,781 -> 973,781 +80,890 -> 909,61 +604,630 -> 307,927 +836,917 -> 184,917 +76,727 -> 10,727 +727,235 -> 727,578 +629,80 -> 892,80 +110,655 -> 663,102 +985,12 -> 11,986 +830,656 -> 830,761 +660,869 -> 660,543 +381,340 -> 381,562 +392,735 -> 417,735 +855,24 -> 320,24 +801,669 -> 278,146 +730,964 -> 107,964 +523,158 -> 385,20 +27,833 -> 27,987 +569,707 -> 500,707 +527,732 -> 527,424 +74,88 -> 273,287 +143,974 -> 143,735 +247,388 -> 813,954 +577,14 -> 945,382 +49,43 -> 953,947 +332,210 -> 332,143 +69,280 -> 949,280 +25,923 -> 904,44 +306,569 -> 306,470 +158,273 -> 113,228 +771,355 -> 694,278 +515,115 -> 245,385 +427,381 -> 427,729 +16,987 -> 987,16 +319,463 -> 319,234 +854,977 -> 66,189 +794,194 -> 794,183 +576,65 -> 576,843 +37,964 -> 734,964 +740,920 -> 740,877 +245,487 -> 245,957 +404,794 -> 853,794 +660,656 -> 660,756 +921,605 -> 127,605 +650,894 -> 916,894 +968,893 -> 481,406 +986,979 -> 21,14 +154,303 -> 498,647 +720,338 -> 229,338 +62,936 -> 62,897 +55,820 -> 55,923 +812,31 -> 551,31 +338,466 -> 951,466 +663,492 -> 775,604 +449,602 -> 39,602 +44,403 -> 44,144 +58,62 -> 339,62 +713,730 -> 713,502 +704,525 -> 976,797 +372,709 -> 372,680 +709,387 -> 153,387 +922,103 -> 615,103 +629,839 -> 121,839 +206,722 -> 529,722 +232,556 -> 422,746 +300,470 -> 300,726 +376,820 -> 622,574 +834,25 -> 255,604 +271,200 -> 271,875 +804,934 -> 872,934 +900,753 -> 900,632 +604,323 -> 604,70 +890,911 -> 890,41 +464,169 -> 812,169 +850,196 -> 850,903 +34,574 -> 34,54 +718,59 -> 462,315 +431,923 -> 737,923 +433,573 -> 433,420 +297,478 -> 297,775 +756,545 -> 544,545 +247,708 -> 247,702 +736,835 -> 173,272 +319,85 -> 319,827 +931,775 -> 683,775 +292,315 -> 451,315 +397,435 -> 380,435 +987,978 -> 82,73 +227,349 -> 227,724 +349,741 -> 899,191 +965,325 -> 765,125 +849,306 -> 88,306 +516,548 -> 516,902 +919,395 -> 568,395 +736,507 -> 192,507 +960,782 -> 196,18 +431,413 -> 510,492 +911,696 -> 911,830 +888,225 -> 174,225 +57,790 -> 57,953 +858,399 -> 119,399 +59,302 -> 290,302 +456,907 -> 456,599 +374,743 -> 374,565 +183,107 -> 183,171 +58,699 -> 288,699 +886,970 -> 109,193 +940,395 -> 806,261 +781,480 -> 596,665 +456,724 -> 265,724 +414,406 -> 299,521 +115,898 -> 115,863 +34,543 -> 34,496 +900,843 -> 900,457 +165,209 -> 189,209 +976,627 -> 539,190 +252,202 -> 137,202 +584,339 -> 550,373 +580,153 -> 380,353 +232,412 -> 650,830 +910,833 -> 88,11 +418,245 -> 829,245 +298,823 -> 907,214 +91,876 -> 495,876 +315,874 -> 650,539 +907,635 -> 365,635 +339,313 -> 320,313 +362,435 -> 362,938 +152,664 -> 152,391 +253,210 -> 272,210 +216,396 -> 216,726 +852,912 -> 15,75 +882,828 -> 689,828 +674,533 -> 674,523 +469,719 -> 469,79 +733,169 -> 665,101 +734,632 -> 717,632 +615,565 -> 615,114 +979,720 -> 243,720 +827,125 -> 827,919 +605,419 -> 601,419 +749,13 -> 433,329 +990,902 -> 990,843 +186,679 -> 186,457 +374,796 -> 736,796 +133,867 -> 133,801 +757,622 -> 812,567 +351,179 -> 351,509 +214,748 -> 575,748 +177,903 -> 861,219 +747,981 -> 747,64 +588,125 -> 588,557 +464,338 -> 769,338 +645,669 -> 125,149 +579,352 -> 138,352 +77,605 -> 520,605 +698,816 -> 698,917 +112,943 -> 112,834 +731,720 -> 724,720 +887,440 -> 976,351 +676,301 -> 676,741 +870,732 -> 870,648 +250,826 -> 413,826 +399,720 -> 543,864 +834,93 -> 468,459 +415,475 -> 415,641 +793,415 -> 47,415 +365,476 -> 365,31 +195,154 -> 813,154 +503,605 -> 773,605 +553,121 -> 851,121 +25,420 -> 423,818 +943,110 -> 258,110 +775,436 -> 826,436 +16,161 -> 16,889 +702,555 -> 920,555 +589,858 -> 533,802 +932,404 -> 932,539 +647,275 -> 647,962 +87,179 -> 326,179 +931,588 -> 931,287 +868,96 -> 557,96 +879,28 -> 875,28 +375,132 -> 287,44 +484,352 -> 644,512 +448,566 -> 448,214 +734,460 -> 717,460 +550,379 -> 550,674 +964,184 -> 820,328 +167,504 -> 387,504 +594,777 -> 952,777 +328,712 -> 837,712 +600,773 -> 546,773 +955,954 -> 82,81 +863,790 -> 863,86 +831,773 -> 32,773 +987,11 -> 19,979 +901,878 -> 901,177 +427,341 -> 721,635 +690,835 -> 567,835 +557,724 -> 14,181 +591,20 -> 205,406 +846,865 -> 846,859 +644,646 -> 742,548 +187,376 -> 187,563 +367,806 -> 250,923 +332,731 -> 468,731 +378,431 -> 469,431 +844,949 -> 844,452 +172,320 -> 735,320 +597,639 -> 633,639 +353,831 -> 353,307 +355,392 -> 465,392 +624,179 -> 548,255 +441,928 -> 401,888 +442,680 -> 442,569 +567,385 -> 908,44 +10,561 -> 603,561 +851,289 -> 13,289 +832,143 -> 832,64 +366,851 -> 67,851 +890,404 -> 333,961 +83,22 -> 963,902 +10,783 -> 821,783 +369,481 -> 369,611 +943,356 -> 846,356 +675,95 -> 335,435 +442,928 -> 442,764 +500,643 -> 334,643 +90,207 -> 620,207 +520,412 -> 745,187 +586,89 -> 613,89 +411,424 -> 595,424 +938,650 -> 232,650 +216,773 -> 76,773 +895,690 -> 895,294 +250,886 -> 250,605 +296,422 -> 863,989 +534,626 -> 534,707 +577,608 -> 52,83 +61,674 -> 714,21 +844,126 -> 844,694 +565,541 -> 253,229 +62,24 -> 986,948 +588,901 -> 588,212 +541,508 -> 541,141 +516,376 -> 589,449 +390,215 -> 749,215 +324,878 -> 296,850 +592,408 -> 592,158 +433,207 -> 172,207 +139,72 -> 139,121 +471,676 -> 268,676 +374,433 -> 374,95 +672,459 -> 640,427 +348,577 -> 843,82 +903,466 -> 903,348 +437,759 -> 726,470 +152,101 -> 325,274 +933,897 -> 335,897 +516,877 -> 505,866 +890,715 -> 570,715 +78,124 -> 871,917 +360,645 -> 967,645 +645,271 -> 645,57 +693,878 -> 693,159 +49,77 -> 49,744 +935,914 -> 97,76 +941,726 -> 941,464 +756,985 -> 756,480 +887,378 -> 887,529 +405,925 -> 405,533 +533,156 -> 201,156 +565,535 -> 120,90 +51,15 -> 967,931 +660,218 -> 660,339 +522,682 -> 571,682 +958,899 -> 729,899 +521,687 -> 288,687 +643,148 -> 468,323 +989,971 -> 68,50 +729,273 -> 311,691 +245,205 -> 305,205 +634,747 -> 634,605 +280,407 -> 488,199 +109,931 -> 706,334 +849,694 -> 615,928 +794,84 -> 218,84 +669,184 -> 865,184 +936,834 -> 234,132 +691,445 -> 914,668 +423,161 -> 515,69 +81,674 -> 37,674 +292,423 -> 292,741 +188,306 -> 844,962 +204,309 -> 204,705 +961,652 -> 746,652 +985,987 -> 11,13 +139,153 -> 936,950 +436,978 -> 244,978 +921,633 -> 921,340 +872,63 -> 233,63 \ No newline at end of file diff --git a/Inputs/Day6.txt b/Inputs/Day6.txt new file mode 100644 index 0000000..233f327 --- /dev/null +++ b/Inputs/Day6.txt @@ -0,0 +1 @@ +3,4,1,2,1,2,5,1,2,1,5,4,3,2,5,1,5,1,2,2,2,3,4,5,2,5,1,3,3,1,3,4,1,5,3,2,2,1,3,2,5,1,1,4,1,4,5,1,3,1,1,5,3,1,1,4,2,2,5,1,5,5,1,5,4,1,5,3,5,1,1,4,1,2,2,1,1,1,4,2,1,3,1,1,4,5,1,1,1,1,1,5,1,1,4,1,1,1,1,2,1,4,2,1,2,4,1,3,1,2,3,2,4,1,1,5,1,1,1,2,5,5,1,1,4,1,2,2,3,5,1,4,5,4,1,3,1,4,1,4,3,2,4,3,2,4,5,1,4,5,2,1,1,1,1,1,3,1,5,1,3,1,1,2,1,4,1,3,1,5,2,4,2,1,1,1,2,1,1,4,1,1,1,1,1,5,4,1,3,3,5,3,2,5,5,2,1,5,2,4,4,1,5,2,3,1,5,3,4,1,5,1,5,3,1,1,1,4,4,5,1,1,1,3,1,4,5,1,2,3,1,3,2,3,1,3,5,4,3,1,3,4,3,1,2,1,1,3,1,1,3,1,1,4,1,2,1,2,5,1,1,3,5,3,3,3,1,1,1,1,1,5,3,3,1,1,3,4,1,1,4,1,1,2,4,4,1,1,3,1,3,2,2,1,2,5,3,3,1,1 \ No newline at end of file diff --git a/Test/Test.fsproj b/Test/Test.fsproj index ff4e4c0..98ecc57 100644 --- a/Test/Test.fsproj +++ b/Test/Test.fsproj @@ -6,6 +6,7 @@ + diff --git a/Test/TestDay6.fs b/Test/TestDay6.fs new file mode 100644 index 0000000..1485dcc --- /dev/null +++ b/Test/TestDay6.fs @@ -0,0 +1,14 @@ +namespace AdventOfCode2021.Test + +open AdventOfCode +open Xunit +open FsUnitTyped + +module TestDay6 = + + [] + let ``Part 1`` () = Day6.part1 () |> shouldEqual 365131UL + + [] + let ``Part 2`` () = + Day6.part2 () |> shouldEqual 1650309278600UL