This commit is contained in:
Patrick Stevens
2022-12-11 08:58:28 +00:00
committed by GitHub
parent c5b360acfa
commit 4205ec4661
9 changed files with 395 additions and 6 deletions

View File

@@ -18,6 +18,7 @@
<Compile Include="Day8.fs" />
<Compile Include="Day9.fs" />
<Compile Include="Day10.fs" />
<Compile Include="Day11.fs" />
<EmbeddedResource Include="Inputs\Day1.txt" />
<EmbeddedResource Include="Inputs\Day2.txt" />
<EmbeddedResource Include="Inputs\Day3.txt" />
@@ -28,6 +29,7 @@
<EmbeddedResource Include="Inputs\Day8.txt" />
<EmbeddedResource Include="Inputs\Day9.txt" />
<EmbeddedResource Include="Inputs\Day10.txt" />
<EmbeddedResource Include="Inputs\Day11.txt" />
</ItemGroup>
<ItemGroup>

View File

@@ -0,0 +1,67 @@
namespace AdventOfCode2022.Test
open NUnit.Framework
open FsUnitTyped
open AdventOfCode2022
[<TestFixture>]
module TestDay11 =
let input =
"""Monkey 0:
Starting items: 79, 98
Operation: new = old * 19
Test: divisible by 23
If true: throw to monkey 2
If false: throw to monkey 3
Monkey 1:
Starting items: 54, 65, 75, 74
Operation: new = old + 6
Test: divisible by 19
If true: throw to monkey 2
If false: throw to monkey 0
Monkey 2:
Starting items: 79, 60, 97
Operation: new = old * old
Test: divisible by 13
If true: throw to monkey 1
If false: throw to monkey 3
Monkey 3:
Starting items: 74
Operation: new = old + 3
Test: divisible by 17
If true: throw to monkey 0
If false: throw to monkey 1
"""
[<Test>]
let ``Part 1, given`` () =
Day11.part1 (StringSplitEnumerator.make '\n' input) |> shouldEqual 10605
[<Test>]
let ``Part 1, single round, given`` () =
let monkeys = Day11.parse (StringSplitEnumerator.make '\n' input)
let inspections = Array.zeroCreate monkeys.Count
Day11.oneRoundDivThree monkeys inspections
inspections |> shouldEqual [| 2 ; 4 ; 3 ; 5 |]
[<Test>]
let ``Part 1`` () =
let input = Assembly.readResource "Day11.txt"
Day11.part1 (StringSplitEnumerator.make '\n' input) |> shouldEqual 120384
[<Test>]
let ``Part 2, given 1`` () =
Day11.part2 (StringSplitEnumerator.make '\n' input) |> shouldEqual 2713310158L
[<Test>]
let ``Part 2`` () =
let input = Assembly.readResource "Day11.txt"
Day11.part2 (StringSplitEnumerator.make '\n' input) |> shouldEqual 32059801242L

View File

@@ -0,0 +1,55 @@
Monkey 0:
Starting items: 99, 67, 92, 61, 83, 64, 98
Operation: new = old * 17
Test: divisible by 3
If true: throw to monkey 4
If false: throw to monkey 2
Monkey 1:
Starting items: 78, 74, 88, 89, 50
Operation: new = old * 11
Test: divisible by 5
If true: throw to monkey 3
If false: throw to monkey 5
Monkey 2:
Starting items: 98, 91
Operation: new = old + 4
Test: divisible by 2
If true: throw to monkey 6
If false: throw to monkey 4
Monkey 3:
Starting items: 59, 72, 94, 91, 79, 88, 94, 51
Operation: new = old * old
Test: divisible by 13
If true: throw to monkey 0
If false: throw to monkey 5
Monkey 4:
Starting items: 95, 72, 78
Operation: new = old + 7
Test: divisible by 11
If true: throw to monkey 7
If false: throw to monkey 6
Monkey 5:
Starting items: 76
Operation: new = old + 8
Test: divisible by 17
If true: throw to monkey 0
If false: throw to monkey 2
Monkey 6:
Starting items: 69, 60, 53, 89, 71, 88
Operation: new = old + 5
Test: divisible by 19
If true: throw to monkey 7
If false: throw to monkey 1
Monkey 7:
Starting items: 72, 54, 63, 80
Operation: new = old + 3
Test: divisible by 7
If true: throw to monkey 1
If false: throw to monkey 3