Last active
December 4, 2015 09:57
-
-
Save daverix/006df505cc895b84ef14 to your computer and use it in GitHub Desktop.
AdventOfCode
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| namespace AdventOfCode { | |
| public class Day1Test { | |
| [Test] | |
| public void SolveSanta1() | |
| { | |
| const string puzzle = | |
| "((((()(()(((((((()))(((()((((()())(())()(((()((((((()((()(()(((()(()((())))()((()()())))))))))()((((((())((()))(((((()(((((((((()()))((()(())()((())((()(()))((()))()))()(((((()(((()()))()())((()((((())()())()((((())()(()(()(((()(())(()(())(((((((())()()(((())(()(()(()(())))(()((((())((()))(((()(()()(((((()()(()(((()(((((())()))()((()(()))()((()((((())((((())(()(((())()()(()()()()()(())((((())((())(()()))()((((())))((((()())()((((())((()())((())(())(((((()((((()(((()((((())(()(((()()))()))((((((()((())()())))(((()(()))(()()(()(((()(()))((()()()())((()()()(((())())()())())())((()))(()(()))(((((()(()(())((()(())(())()((((()())()))((((())(())((())())((((()(((())(())((()()((((()((((((()(())()()(()(()()((((()))(())()())()))(())))(())))())()()(())(()))()((()(()(())()()))(()())))))(()))(()()))(())(((((()(()(()()((())()())))))((())())((())(()(())((()))(())(((()((((((((()()()(()))()()(((()))()((()()(())(())())()(()(())))(((((()(())(())(()))))())()))(()))()(()(((((((()((((())))())())())())()((((((((((((((()()((((((()()()())())()())())())(())(())))())((()())((()(()))))))()))))))))))))))))())((())((())()()))))))(((()((()(()()))((())(()()))()()())))(())))))))(()(((())))())()())))()()(())()))()(()))())((()()))))(()))))()))(()()(())))))))()(((()))))()(()))(())())))))()))((()))((()))())(())))))))))((((())()))()))()))())(())()()(())))())))(()())()))((()()(())))(())((((((()(())((()(((()(()()(())))()))))))()))()(()((()))()(()))(()(((())((((())())(())(()))))))))())))))))())())))))())))))()()(((())()(()))))))))())))))(())()()()))()))()))(()(())()()())())))))))())()(()(()))))()()()))))())(()))))()()))))()())))))(((())()()))(()))))))))))()()))))()()()))))(()())())()()())()(()))))()(()))(())))))))(((((())(())())()()))()()))(())))))()(()))))(())(()()))()())()))()))()))()))))())()()))())())))(()))(()))))))())()(((())()))))))))()))()())))())))())))()))))))))))()()))(()()))))))(())()(()))))())(()))))(()))))(()())))))())())()()))))())()))))))))(()))))()))))))()(()())))))))()))())))())))())))())))))))())(()()))))))(()())())))()())()))))))))))))))())))()(())))()))())()()(())(()()))(())))())()())(()(()(()))))())))))))))))())(()))()))()))))(())()())()())))))))))))()()))))))))))))())())))))(()())))))))))))())(())))()))))))))())())(()))()))(())))()))()()(())()))))))()((((())()))())())))))()))()))))((()())()))))())))(())))))))))))))))))()))))()()())()))()()))))())()))((()())))())))(()))(()())))))))()))()))))(())))))))(())))))())()()(()))())()))()()))))())()()))))())()))())))))))(()))))()())()))))))))(()))())))(()))()))))(())()))())())(())())())))))))((((())))))()))()))()())()(())))()))()))()())(()())()()(()())()))))())())))))(()))()))))())(()()(())))))(())()()((())())))))(())(())))))))())))))))))()(())))))))()())())())()(()))))))))(()))))))))())()()))()(()))))))()))))))())))))))(())))()()(())()())))))(((())))()((())()))())))(()()))())(())())))()(((()())))))()(()()())))()()(()()(()()))())()(()()()))())()()))()())(()))))())))))())))(())()()))))(()))))(())(()))(())))))()()))()))))())()))()()(())())))((()))())()))))))()()))))((()(()))))()()))))))())))))())(()((()())))))))))))()())())))()))(()))))))(()))(())()())))(()))))))))())()()()()))))(()())))))))((())))()))(()))(())(())()())()))))))))(())))())))(()))()()))(()()))(()))())))()(())))())((()((()(())))((())))()))))((((())())()())))(())))()))))))())(()()((())))())()(()())))))(()())()))())))))))((())())))))))(()(()))())()()(()()(((()(((()())))))()))))))()(())(()()((()()(())()()))())()())()))()())())())))))))(((())))))))()()))))))(((())()))(()()))(()()))))(()(()()((((())()())((()()))))(()(())))))()((()()()())()()((()((()()))(()))(((()()()))(((())))()(((())()))))))((()(())())))(()())(((((()(()))(()((()))(()())()))))(()(()))()(()))(())(((())(()()))))()()))(((()))))(()()()()))())))((()()()(())()))()))))()()))()))))))((((((()()()))))())((()()(((()))))(()(())(()()())())())))()(((()()))(())((())))(()))(()()()())((())())())(()))))()))()((()(())()(()()(())(()))(())()))(())(()))))(())(())())(()()(()((()()((())))((()))()((())))(((()()()()((((()))(()()))()()()(((())((())())(()()(()()()))()((())(())()))())(((()()(())))()((()()())()())(()(())())(((())(())())((())(())()(((()()))(())))((())(()())())(())((()()()((((((())))((()(((((())()))()))(())(()()))()))(())()()))(())((()()())()()(()))())()((())))()((()()())((((()())((())())())((()((()))()))((())((()()(()((()()(((())(()()))))((()((())()(((())(()((())())((())(()((((((())())()(()())()(())(((())((((((()(())(()((()()()((()()(()()()())))()()(((((()()))()((((((()))()(()(()(()(((()())((()))())()((()))(())))()))()()))())()()))())((((())(()(()))(((((((())(((()(((((()(((()()((((())(((())())))(()()()(()(()))()))((((((()))((()(((()(())((()((((()((((((())(((((())))(((()(()))))(((()(((())()((())(()((()))(((()()(((())((((()(()(((((()))(((()(((((((()(()()()(()(()(()()())(())(((((()(())())()())(()(()(()))()(()()()())(()()(()((()))()((())())()(()))((())(()))()(()))()(((()(()(()((((((()()()()())()(((((()()(((()()()((()(((((()))((((((((()()()(((((()))))))(()()()(())(()))(()()))))(())()))(((((()(((((()()(()(()())(((()))((((()((()(()(()((()(()((())))()(((()((()))((()))(((((((((()((()((()(())))()((((()((()()))((())(((()(((((()()(()(()()((()(()()()(((((((())())()())))))((((()()(()))()))(()((())()(()(((((((((()()(((()(()())(()((()())((())())((((()(((()(((()((((()((()((((()(()((((((())((((((((((((()()(()()((((((((((((((()((()()))()((((((((((((())((((()(()())((()(()(()))()(((((()()(((()()))()())(())((()(((((()((())(((((()((()(((((()))()()((((())()((((())(((((((((()(())(()(())))())(()((())(((())(())(())())(()(()(())()()((()((())()(((()(((((()(())))()(((()((())))((()()()(((()(((()((()(()(())(()((()())(()(()(((()(((((((((())(()((((()()))(()((((()()()()(((()((((((((()(()()((((((()(()()(()((()((((((((((()()(((((((()())(())))(((()()))(((((()((()()())(()()((((())((()((((()))))(())((()(()()(((()(()(((()((((()(((((()))())())(()((())()))(((()())((())((())((((()((()((((((())(()((((()()))((((((())()(()))((()(((())((((((((((()()(((((()(((((()((()()()((((())))(()))()((()(())()()((()((((((((((()((())(())(((((()(()(()()))((((()((((()()((()(((()(((((((((()(()((()((()))((((((()(((())()()((()(((((((()())))()()(()((()((()()(((()(()()()()((((()((())((((()(((((((((()(((()()(((()(()(((()(((()((())()(()((()(()(()(()))()(((()))(()((((()((())((((())((((((())(()))(()((((())((()(()((((((((()()((((((()(()(()()()(())((()((()()(((()(((((((()()((()(((((((()))(((((()(((()(()()()(()(((()((()()((())(()(((((((((()(()((()((((((()()((())()))(((((()((())()())()(((((((((((()))((((()()()()())(()()(()(()()))()))(()))(()(((()()))())(()(()))()()((())(()())()())()(()))()))(()()(()((((((())((()(((((((((((()(())()((()(()((()((()(()((()((((((((((()()())((())()(())))((())()())()(((((()(()())((((()((()(())(()))(((())()((()))(((((())(()))()()(()))(((())((((()((((()(())))(((((((()))))())()())(())((())()(()()((()(()))()(()()(()()((()())((())((()()))((((()))()()))(()()(())()()(((((()(())((()((((()))()))(()())())(((()()(()()))(())))))(()))((())(((((()((((()))()((((()))()((())(((())))(((()())))((()(()()(("; | |
| Assert.AreEqual(0, GetFloor(puzzle)); | |
| } | |
| [Test] | |
| public void SolveSanta2() | |
| { | |
| const string puzzle = "(())"; | |
| Assert.AreEqual(0, GetFloor(puzzle)); | |
| } | |
| [Test] | |
| public void SolveSanta3() | |
| { | |
| const string puzzle = "()()"; | |
| Assert.AreEqual(0, GetFloor(puzzle)); | |
| } | |
| [Test] | |
| public void SolveSanta4() | |
| { | |
| const string puzzle = "((("; | |
| Assert.AreEqual(3, GetFloor(puzzle)); | |
| } | |
| [Test] | |
| public void SolveSanta5() | |
| { | |
| const string puzzle = "(()(()("; | |
| Assert.AreEqual(3, GetFloor(puzzle)); | |
| } | |
| [Test] | |
| public void SolveSanta6() | |
| { | |
| const string puzzle = "(()(()("; | |
| Assert.AreEqual(3, GetFloor(puzzle)); | |
| } | |
| [Test] | |
| public void SolveSanta7() | |
| { | |
| const string puzzle = "))((((("; | |
| Assert.AreEqual(3, GetFloor(puzzle)); | |
| } | |
| [Test] | |
| public void SolveSanta8() | |
| { | |
| const string puzzle = "())"; | |
| Assert.AreEqual(-1, GetFloor(puzzle)); | |
| } | |
| [Test] | |
| public void SolveSanta9() | |
| { | |
| const string puzzle = "))("; | |
| Assert.AreEqual(-1, GetFloor(puzzle)); | |
| } | |
| [Test] | |
| public void SolveSanta10() | |
| { | |
| const string puzzle = ")))"; | |
| Assert.AreEqual(-3, GetFloor(puzzle)); | |
| } | |
| [Test] | |
| public void SolveSanta11() | |
| { | |
| const string puzzle = ")())())"; | |
| Assert.AreEqual(-3, GetFloor(puzzle)); | |
| } | |
| private static int GetFloor(string puzzle) | |
| { | |
| return puzzle.Sum(x => x == '(' ? 1 : x == ')' ? -1 : 0); | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| namespace AdventOfCode { | |
| public class Day2Test { | |
| [Test] | |
| public void SolveSanta1() | |
| { | |
| const string puzzle = "2x3x4"; | |
| Assert.AreEqual(58, GetAmount(puzzle)); | |
| } | |
| [Test] | |
| public void SolveSanta2() | |
| { | |
| const string puzzle = "1x1x10"; | |
| Assert.AreEqual(43, GetAmount(puzzle)); | |
| } | |
| [Test] | |
| public void SolveSanta3() | |
| { | |
| const string puzzle = @"2x3x4 | |
| 1x1x10"; | |
| Assert.AreEqual(101, GetAmount(puzzle)); | |
| } | |
| [Test] | |
| public void SolveSanta4() | |
| { | |
| const string puzzle = @"4x23x21 | |
| 22x29x19 | |
| 11x4x11 | |
| 8x10x5 | |
| 24x18x16 | |
| 11x25x22 | |
| 2x13x20 | |
| 24x15x14 | |
| 14x22x2 | |
| 30x7x3 | |
| 30x22x25 | |
| 29x9x9 | |
| 29x29x26 | |
| 14x3x16 | |
| 1x10x26 | |
| 29x2x30 | |
| 30x10x25 | |
| 10x26x20 | |
| 1x2x18 | |
| 25x18x5 | |
| 21x3x24 | |
| 2x5x7 | |
| 22x11x21 | |
| 11x8x8 | |
| 16x18x2 | |
| 13x3x8 | |
| 1x16x19 | |
| 19x16x12 | |
| 21x15x1 | |
| 29x9x4 | |
| 27x10x8 | |
| 2x7x27 | |
| 2x20x23 | |
| 24x11x5 | |
| 2x8x27 | |
| 10x28x10 | |
| 24x11x10 | |
| 19x2x12 | |
| 27x5x10 | |
| 1x14x25 | |
| 5x14x30 | |
| 15x26x12 | |
| 23x20x22 | |
| 5x12x1 | |
| 9x26x9 | |
| 23x25x5 | |
| 28x16x19 | |
| 17x23x17 | |
| 2x27x20 | |
| 18x27x13 | |
| 16x7x18 | |
| 22x7x29 | |
| 17x28x6 | |
| 9x22x17 | |
| 10x5x6 | |
| 14x2x12 | |
| 25x5x6 | |
| 26x9x10 | |
| 19x21x6 | |
| 19x4x27 | |
| 23x16x14 | |
| 21x17x29 | |
| 24x18x10 | |
| 7x19x6 | |
| 14x15x10 | |
| 9x10x19 | |
| 20x18x4 | |
| 11x14x8 | |
| 30x15x9 | |
| 25x12x24 | |
| 3x12x5 | |
| 12x21x28 | |
| 8x23x10 | |
| 18x26x8 | |
| 17x1x8 | |
| 2x29x15 | |
| 3x13x28 | |
| 23x20x11 | |
| 27x25x6 | |
| 19x21x3 | |
| 30x22x27 | |
| 28x24x4 | |
| 26x18x21 | |
| 11x7x16 | |
| 22x27x6 | |
| 27x5x26 | |
| 4x10x4 | |
| 4x2x27 | |
| 2x3x26 | |
| 26x29x19 | |
| 30x26x24 | |
| 8x25x12 | |
| 16x17x5 | |
| 13x2x3 | |
| 1x30x22 | |
| 20x9x1 | |
| 24x26x19 | |
| 26x18x1 | |
| 18x29x24 | |
| 1x6x9 | |
| 20x27x2 | |
| 3x22x21 | |
| 4x16x8 | |
| 29x18x16 | |
| 7x16x23 | |
| 13x8x14 | |
| 19x25x10 | |
| 23x29x6 | |
| 23x21x1 | |
| 22x26x10 | |
| 14x4x2 | |
| 18x29x17 | |
| 9x4x18 | |
| 7x22x9 | |
| 19x5x26 | |
| 27x29x19 | |
| 7x13x14 | |
| 19x10x1 | |
| 6x22x3 | |
| 12x21x5 | |
| 24x20x12 | |
| 28x2x11 | |
| 16x18x23 | |
| 2x13x25 | |
| 11x7x17 | |
| 27x21x4 | |
| 2x10x25 | |
| 22x16x17 | |
| 23x22x15 | |
| 17x13x13 | |
| 23x24x26 | |
| 27x18x24 | |
| 24x7x28 | |
| 30x12x15 | |
| 14x28x19 | |
| 2x15x29 | |
| 12x13x5 | |
| 17x22x21 | |
| 27x10x27 | |
| 17x6x25 | |
| 22x2x1 | |
| 1x10x9 | |
| 9x7x2 | |
| 30x28x3 | |
| 28x11x10 | |
| 8x23x15 | |
| 23x4x20 | |
| 12x5x4 | |
| 13x17x14 | |
| 28x11x2 | |
| 21x11x29 | |
| 10x23x22 | |
| 27x23x14 | |
| 7x15x23 | |
| 20x2x13 | |
| 8x21x4 | |
| 10x20x11 | |
| 23x28x11 | |
| 21x22x25 | |
| 23x11x17 | |
| 2x29x10 | |
| 28x16x5 | |
| 30x26x10 | |
| 17x24x16 | |
| 26x27x25 | |
| 14x13x25 | |
| 22x27x5 | |
| 24x15x12 | |
| 5x21x25 | |
| 4x27x1 | |
| 25x4x10 | |
| 15x13x1 | |
| 21x23x7 | |
| 8x3x4 | |
| 10x5x7 | |
| 9x13x30 | |
| 2x2x30 | |
| 26x4x29 | |
| 5x14x14 | |
| 2x27x9 | |
| 22x16x1 | |
| 4x23x5 | |
| 13x7x26 | |
| 2x12x10 | |
| 12x7x22 | |
| 26x30x26 | |
| 28x16x28 | |
| 15x19x11 | |
| 4x18x1 | |
| 20x14x24 | |
| 6x10x22 | |
| 9x20x3 | |
| 14x9x27 | |
| 26x17x9 | |
| 10x30x28 | |
| 6x3x29 | |
| 4x16x28 | |
| 8x24x11 | |
| 23x10x1 | |
| 11x7x7 | |
| 29x6x15 | |
| 13x25x12 | |
| 29x14x3 | |
| 26x22x21 | |
| 8x3x11 | |
| 27x13x25 | |
| 27x6x2 | |
| 8x11x7 | |
| 25x12x9 | |
| 24x30x12 | |
| 13x1x30 | |
| 25x23x16 | |
| 9x13x29 | |
| 29x26x16 | |
| 11x15x9 | |
| 11x23x6 | |
| 15x27x28 | |
| 27x24x21 | |
| 6x24x1 | |
| 25x25x5 | |
| 11x1x26 | |
| 21x4x24 | |
| 10x5x12 | |
| 4x30x13 | |
| 24x22x5 | |
| 26x7x21 | |
| 23x3x17 | |
| 22x18x2 | |
| 25x1x14 | |
| 23x25x30 | |
| 8x7x7 | |
| 30x19x8 | |
| 17x6x15 | |
| 2x11x20 | |
| 8x3x22 | |
| 23x14x26 | |
| 8x22x25 | |
| 27x1x2 | |
| 10x26x2 | |
| 28x30x7 | |
| 5x30x7 | |
| 27x16x30 | |
| 28x29x1 | |
| 8x25x18 | |
| 20x12x29 | |
| 9x19x9 | |
| 7x25x15 | |
| 25x18x18 | |
| 11x8x2 | |
| 4x20x6 | |
| 18x5x20 | |
| 2x3x29 | |
| 25x26x22 | |
| 18x25x26 | |
| 9x12x16 | |
| 18x7x27 | |
| 17x20x9 | |
| 6x29x26 | |
| 17x7x19 | |
| 21x7x5 | |
| 29x15x12 | |
| 22x4x1 | |
| 11x12x11 | |
| 26x30x4 | |
| 12x24x13 | |
| 13x8x3 | |
| 26x25x3 | |
| 21x26x10 | |
| 14x9x26 | |
| 20x1x7 | |
| 11x12x3 | |
| 12x11x4 | |
| 11x15x30 | |
| 17x6x25 | |
| 20x22x3 | |
| 1x16x17 | |
| 11x5x20 | |
| 12x12x7 | |
| 2x14x10 | |
| 14x27x3 | |
| 14x16x18 | |
| 21x28x24 | |
| 14x20x1 | |
| 29x14x1 | |
| 10x10x9 | |
| 25x23x4 | |
| 17x15x14 | |
| 9x20x26 | |
| 16x2x17 | |
| 13x28x25 | |
| 16x1x11 | |
| 19x16x8 | |
| 20x21x2 | |
| 27x9x22 | |
| 24x18x3 | |
| 23x30x6 | |
| 4x18x3 | |
| 30x15x8 | |
| 27x20x19 | |
| 28x29x26 | |
| 2x21x18 | |
| 1x23x30 | |
| 1x9x12 | |
| 4x11x30 | |
| 1x28x4 | |
| 17x10x10 | |
| 12x14x6 | |
| 8x9x24 | |
| 8x3x3 | |
| 29x8x20 | |
| 26x29x2 | |
| 29x25x25 | |
| 11x17x23 | |
| 6x30x21 | |
| 13x18x29 | |
| 2x10x8 | |
| 29x29x27 | |
| 27x15x15 | |
| 16x17x30 | |
| 3x3x22 | |
| 21x12x6 | |
| 22x1x5 | |
| 30x8x20 | |
| 6x28x13 | |
| 11x2x23 | |
| 14x18x27 | |
| 6x26x13 | |
| 10x24x24 | |
| 4x24x6 | |
| 20x8x3 | |
| 23x11x5 | |
| 29x5x24 | |
| 14x15x22 | |
| 21x17x13 | |
| 10x10x8 | |
| 1x11x23 | |
| 21x19x24 | |
| 19x9x13 | |
| 21x26x28 | |
| 25x11x28 | |
| 2x17x1 | |
| 18x9x8 | |
| 5x21x6 | |
| 12x5x2 | |
| 23x8x15 | |
| 30x16x24 | |
| 7x9x27 | |
| 16x30x7 | |
| 2x21x28 | |
| 5x10x6 | |
| 8x7x1 | |
| 28x13x5 | |
| 11x5x14 | |
| 26x22x29 | |
| 23x15x13 | |
| 14x2x16 | |
| 22x21x9 | |
| 4x20x3 | |
| 18x17x19 | |
| 12x7x9 | |
| 6x12x25 | |
| 3x30x27 | |
| 8x19x22 | |
| 1x9x27 | |
| 23x20x12 | |
| 14x7x29 | |
| 9x12x12 | |
| 30x2x6 | |
| 15x7x16 | |
| 19x13x18 | |
| 11x8x13 | |
| 16x5x3 | |
| 19x26x24 | |
| 26x8x21 | |
| 21x20x7 | |
| 15x1x25 | |
| 29x15x21 | |
| 22x17x7 | |
| 16x17x10 | |
| 6x12x24 | |
| 8x13x27 | |
| 30x25x14 | |
| 25x7x10 | |
| 15x2x2 | |
| 18x15x19 | |
| 18x13x24 | |
| 19x30x1 | |
| 17x1x3 | |
| 26x21x15 | |
| 10x10x18 | |
| 9x16x6 | |
| 29x7x30 | |
| 11x10x30 | |
| 6x11x2 | |
| 7x29x23 | |
| 13x2x30 | |
| 25x27x13 | |
| 5x15x21 | |
| 4x8x30 | |
| 15x27x11 | |
| 27x1x6 | |
| 2x24x11 | |
| 16x20x19 | |
| 25x28x20 | |
| 6x8x4 | |
| 27x16x11 | |
| 1x5x27 | |
| 12x19x26 | |
| 18x24x14 | |
| 4x25x17 | |
| 24x24x26 | |
| 28x3x18 | |
| 8x20x28 | |
| 22x7x21 | |
| 24x5x28 | |
| 23x30x29 | |
| 25x16x27 | |
| 28x10x30 | |
| 9x2x4 | |
| 30x2x23 | |
| 21x9x23 | |
| 27x4x26 | |
| 2x23x16 | |
| 24x26x30 | |
| 26x1x30 | |
| 10x4x28 | |
| 11x29x12 | |
| 28x13x30 | |
| 24x10x28 | |
| 8x12x12 | |
| 19x27x11 | |
| 11x28x7 | |
| 14x6x3 | |
| 6x27x5 | |
| 6x17x14 | |
| 24x24x17 | |
| 18x23x14 | |
| 17x5x7 | |
| 11x4x23 | |
| 5x1x17 | |
| 26x15x24 | |
| 3x9x24 | |
| 5x3x15 | |
| 5x20x19 | |
| 5x21x2 | |
| 13x5x30 | |
| 19x6x24 | |
| 19x17x6 | |
| 23x7x13 | |
| 28x23x13 | |
| 9x1x6 | |
| 15x12x16 | |
| 21x19x9 | |
| 25x5x5 | |
| 9x7x9 | |
| 6x5x8 | |
| 3x11x18 | |
| 23x25x11 | |
| 25x4x6 | |
| 4x27x1 | |
| 4x3x3 | |
| 30x11x5 | |
| 9x17x12 | |
| 15x6x24 | |
| 10x22x15 | |
| 29x27x9 | |
| 20x21x11 | |
| 18x10x5 | |
| 11x2x2 | |
| 9x8x8 | |
| 1x26x21 | |
| 11x11x16 | |
| 2x18x30 | |
| 29x27x24 | |
| 27x8x18 | |
| 19x3x17 | |
| 30x21x26 | |
| 25x13x25 | |
| 20x22x1 | |
| 10x1x12 | |
| 11x17x15 | |
| 29x11x30 | |
| 17x30x27 | |
| 21x22x17 | |
| 13x6x22 | |
| 22x16x12 | |
| 27x18x19 | |
| 4x13x6 | |
| 27x29x10 | |
| 3x23x10 | |
| 26x16x24 | |
| 18x26x20 | |
| 11x28x16 | |
| 21x6x15 | |
| 9x26x17 | |
| 8x15x8 | |
| 3x7x10 | |
| 2x28x8 | |
| 1x2x24 | |
| 7x8x9 | |
| 19x4x22 | |
| 11x20x9 | |
| 12x22x16 | |
| 26x8x19 | |
| 13x28x24 | |
| 4x10x16 | |
| 12x8x10 | |
| 14x24x24 | |
| 19x19x28 | |
| 29x1x15 | |
| 10x5x14 | |
| 20x19x23 | |
| 10x7x12 | |
| 1x7x13 | |
| 5x12x13 | |
| 25x21x8 | |
| 22x28x8 | |
| 7x9x4 | |
| 3x20x15 | |
| 15x27x19 | |
| 18x24x12 | |
| 16x10x16 | |
| 22x19x8 | |
| 15x4x3 | |
| 9x30x25 | |
| 1x1x6 | |
| 24x4x25 | |
| 13x18x29 | |
| 10x2x8 | |
| 21x1x17 | |
| 29x14x22 | |
| 17x29x11 | |
| 10x27x16 | |
| 25x16x15 | |
| 14x2x17 | |
| 12x27x3 | |
| 14x17x25 | |
| 24x4x1 | |
| 18x28x18 | |
| 9x14x26 | |
| 28x24x17 | |
| 1x26x12 | |
| 2x18x20 | |
| 12x19x22 | |
| 19x25x20 | |
| 5x17x27 | |
| 17x29x16 | |
| 29x19x11 | |
| 16x2x4 | |
| 23x24x1 | |
| 19x18x3 | |
| 28x14x6 | |
| 18x5x23 | |
| 9x24x12 | |
| 15x4x6 | |
| 15x7x24 | |
| 22x15x8 | |
| 22x1x22 | |
| 6x4x22 | |
| 26x1x30 | |
| 8x21x27 | |
| 7x1x11 | |
| 9x8x18 | |
| 20x27x12 | |
| 26x23x20 | |
| 26x22x30 | |
| 24x3x16 | |
| 8x24x28 | |
| 13x28x5 | |
| 4x29x23 | |
| 22x5x8 | |
| 20x22x3 | |
| 9x9x17 | |
| 28x3x30 | |
| 10x13x10 | |
| 10x25x13 | |
| 9x20x3 | |
| 1x21x25 | |
| 24x21x15 | |
| 21x5x14 | |
| 13x8x20 | |
| 29x17x3 | |
| 5x17x28 | |
| 16x12x7 | |
| 23x1x24 | |
| 4x24x29 | |
| 23x25x14 | |
| 8x27x2 | |
| 23x11x13 | |
| 13x4x5 | |
| 24x1x26 | |
| 21x1x23 | |
| 10x12x12 | |
| 21x29x25 | |
| 27x25x30 | |
| 24x23x4 | |
| 1x30x23 | |
| 29x28x14 | |
| 4x11x30 | |
| 9x25x10 | |
| 17x11x6 | |
| 14x29x30 | |
| 23x5x5 | |
| 25x18x21 | |
| 8x7x1 | |
| 27x11x3 | |
| 5x10x8 | |
| 11x1x11 | |
| 16x17x26 | |
| 15x22x19 | |
| 16x9x6 | |
| 18x13x27 | |
| 26x4x22 | |
| 1x20x21 | |
| 6x14x29 | |
| 11x7x6 | |
| 1x23x7 | |
| 12x19x13 | |
| 18x21x25 | |
| 15x17x20 | |
| 23x8x9 | |
| 15x9x26 | |
| 9x12x9 | |
| 12x13x14 | |
| 27x26x7 | |
| 11x19x22 | |
| 16x12x21 | |
| 10x30x28 | |
| 21x2x7 | |
| 12x9x18 | |
| 7x17x14 | |
| 13x17x17 | |
| 3x21x10 | |
| 30x9x15 | |
| 2x8x15 | |
| 15x12x10 | |
| 23x26x9 | |
| 29x30x10 | |
| 30x22x17 | |
| 17x26x30 | |
| 27x26x20 | |
| 17x28x17 | |
| 30x12x16 | |
| 7x23x15 | |
| 30x15x19 | |
| 13x19x10 | |
| 22x10x4 | |
| 17x23x10 | |
| 2x28x18 | |
| 27x21x28 | |
| 24x26x5 | |
| 6x23x25 | |
| 17x4x16 | |
| 14x1x13 | |
| 23x21x11 | |
| 14x15x30 | |
| 26x13x10 | |
| 30x19x25 | |
| 26x6x26 | |
| 9x16x29 | |
| 15x2x24 | |
| 13x3x20 | |
| 23x12x30 | |
| 22x23x23 | |
| 8x21x2 | |
| 18x28x5 | |
| 21x27x14 | |
| 29x28x23 | |
| 12x30x28 | |
| 17x16x3 | |
| 5x19x11 | |
| 28x22x22 | |
| 1x4x28 | |
| 10x10x14 | |
| 18x15x7 | |
| 18x11x1 | |
| 12x7x16 | |
| 10x22x24 | |
| 27x25x6 | |
| 19x29x25 | |
| 10x1x26 | |
| 26x27x30 | |
| 4x23x19 | |
| 24x19x4 | |
| 21x11x14 | |
| 4x13x27 | |
| 9x1x11 | |
| 16x20x8 | |
| 4x3x11 | |
| 1x16x12 | |
| 14x6x30 | |
| 8x1x10 | |
| 11x18x7 | |
| 29x28x30 | |
| 4x21x8 | |
| 3x21x4 | |
| 6x1x5 | |
| 26x18x3 | |
| 28x27x27 | |
| 17x3x12 | |
| 6x1x22 | |
| 23x12x28 | |
| 12x13x2 | |
| 11x2x13 | |
| 7x1x28 | |
| 27x6x25 | |
| 14x14x3 | |
| 14x11x20 | |
| 2x27x7 | |
| 22x24x23 | |
| 7x15x20 | |
| 30x6x17 | |
| 20x23x25 | |
| 18x16x27 | |
| 2x9x6 | |
| 9x18x19 | |
| 20x11x22 | |
| 11x16x19 | |
| 14x29x23 | |
| 14x9x20 | |
| 8x10x12 | |
| 18x17x6 | |
| 28x7x16 | |
| 12x19x28 | |
| 5x3x16 | |
| 1x25x10 | |
| 4x14x10 | |
| 9x6x3 | |
| 15x27x28 | |
| 13x26x14 | |
| 21x8x25 | |
| 29x10x20 | |
| 14x26x30 | |
| 25x13x28 | |
| 1x15x23 | |
| 6x20x21 | |
| 18x2x1 | |
| 22x25x16 | |
| 23x25x17 | |
| 2x14x21 | |
| 14x25x16 | |
| 12x17x6 | |
| 19x29x15 | |
| 25x9x6 | |
| 19x17x13 | |
| 24x22x5 | |
| 19x4x13 | |
| 10x18x6 | |
| 6x25x6 | |
| 23x24x20 | |
| 8x22x13 | |
| 25x10x29 | |
| 5x12x25 | |
| 20x5x11 | |
| 7x16x29 | |
| 29x24x22 | |
| 28x20x1 | |
| 10x27x10 | |
| 6x9x27 | |
| 26x15x30 | |
| 26x3x19 | |
| 20x11x3 | |
| 26x1x29 | |
| 6x23x4 | |
| 6x13x21 | |
| 9x23x25 | |
| 15x1x10 | |
| 29x12x13 | |
| 7x8x24 | |
| 29x30x27 | |
| 3x29x19 | |
| 14x16x17 | |
| 4x8x27 | |
| 26x17x8 | |
| 10x27x17 | |
| 11x28x17 | |
| 17x16x27 | |
| 1x8x22 | |
| 6x30x16 | |
| 7x30x22 | |
| 20x12x3 | |
| 18x10x2 | |
| 20x21x26 | |
| 11x1x17 | |
| 9x15x15 | |
| 19x14x30 | |
| 24x22x20 | |
| 11x26x23 | |
| 14x3x23 | |
| 1x28x29 | |
| 29x20x4 | |
| 1x4x20 | |
| 12x26x8 | |
| 14x11x14 | |
| 14x19x13 | |
| 15x13x24 | |
| 16x7x26 | |
| 11x20x11 | |
| 5x24x26 | |
| 24x25x7 | |
| 21x3x14 | |
| 24x29x20 | |
| 7x12x1 | |
| 16x17x4 | |
| 29x16x21 | |
| 28x8x17 | |
| 11x30x25 | |
| 1x26x23 | |
| 25x19x28 | |
| 30x24x5 | |
| 26x29x15 | |
| 4x25x23 | |
| 14x25x19 | |
| 29x10x7 | |
| 29x29x28 | |
| 19x13x24 | |
| 21x28x5 | |
| 8x15x24 | |
| 1x10x12 | |
| 2x26x6 | |
| 14x14x4 | |
| 10x16x27 | |
| 9x17x25 | |
| 25x8x7 | |
| 1x9x28 | |
| 10x8x17 | |
| 4x12x1 | |
| 17x26x29 | |
| 23x12x26 | |
| 2x21x22 | |
| 18x23x13 | |
| 1x14x5 | |
| 25x27x26 | |
| 4x30x30 | |
| 5x13x2 | |
| 17x9x6 | |
| 28x18x28 | |
| 7x30x2 | |
| 28x22x17 | |
| 14x15x14 | |
| 10x14x19 | |
| 6x15x22 | |
| 27x4x17 | |
| 28x21x6 | |
| 19x29x26 | |
| 6x17x17 | |
| 20x13x16 | |
| 25x4x1 | |
| 2x9x5 | |
| 30x3x1 | |
| 24x21x2 | |
| 14x19x12 | |
| 22x5x23 | |
| 14x4x21 | |
| 10x2x17 | |
| 3x14x10 | |
| 17x5x3 | |
| 22x17x13 | |
| 5x19x3 | |
| 29x22x6 | |
| 12x28x3 | |
| 9x21x25 | |
| 10x2x14 | |
| 13x26x7 | |
| 18x23x2 | |
| 9x14x17 | |
| 21x3x13 | |
| 13x23x9 | |
| 1x20x4 | |
| 11x4x1 | |
| 19x5x30 | |
| 9x9x29 | |
| 26x29x14 | |
| 1x4x10 | |
| 7x27x30 | |
| 8x3x23 | |
| 1x27x27 | |
| 7x27x27 | |
| 1x26x16 | |
| 29x16x14 | |
| 18x6x12 | |
| 24x24x24 | |
| 26x2x19 | |
| 15x17x4 | |
| 11x7x14 | |
| 14x19x10 | |
| 9x10x1 | |
| 14x17x9 | |
| 20x19x13 | |
| 25x20x8 | |
| 24x20x21 | |
| 26x30x2 | |
| 24x2x10 | |
| 28x4x13 | |
| 27x17x11 | |
| 15x3x8 | |
| 11x29x10 | |
| 26x15x16 | |
| 4x28x22 | |
| 7x5x22 | |
| 10x28x9 | |
| 6x28x13 | |
| 10x5x6 | |
| 20x12x6 | |
| 25x30x30 | |
| 17x16x14 | |
| 14x20x3 | |
| 16x10x8 | |
| 9x28x14 | |
| 16x12x12 | |
| 11x13x25 | |
| 21x16x28 | |
| 10x3x18 | |
| 5x9x20 | |
| 17x23x5 | |
| 3x13x16 | |
| 29x30x17 | |
| 2x2x8 | |
| 15x8x30 | |
| 20x1x16 | |
| 23x10x29 | |
| 4x5x4 | |
| 6x18x12 | |
| 26x10x22 | |
| 21x10x17 | |
| 26x12x29 | |
| 7x20x21 | |
| 18x9x15 | |
| 10x23x20 | |
| 20x1x27 | |
| 10x10x3 | |
| 25x12x23 | |
| 30x11x15 | |
| 16x22x3 | |
| 22x10x11 | |
| 15x10x20 | |
| 2x20x17 | |
| 20x20x1 | |
| 24x16x4 | |
| 23x27x7 | |
| 7x27x22 | |
| 24x16x8 | |
| 20x11x25 | |
| 30x28x11 | |
| 21x6x24 | |
| 15x2x9 | |
| 16x30x24 | |
| 21x27x9 | |
| 7x19x8 | |
| 24x13x28 | |
| 12x26x28 | |
| 16x21x11 | |
| 25x5x13 | |
| 23x3x17 | |
| 23x1x17 | |
| 4x17x18 | |
| 17x13x18 | |
| 25x12x19 | |
| 17x4x19 | |
| 4x21x26 | |
| 6x28x1 | |
| 23x22x15 | |
| 6x23x12 | |
| 21x17x9 | |
| 30x4x23 | |
| 2x19x21 | |
| 28x24x7 | |
| 19x24x14 | |
| 13x20x26 | |
| 19x24x29 | |
| 8x26x3 | |
| 16x12x14 | |
| 17x4x21 | |
| 8x4x20 | |
| 13x27x17 | |
| 9x21x1 | |
| 29x25x6 | |
| 7x9x26 | |
| 13x25x5 | |
| 6x9x21 | |
| 12x10x11 | |
| 30x28x21 | |
| 15x6x2 | |
| 8x18x19 | |
| 26x20x24 | |
| 26x17x14 | |
| 27x8x1 | |
| 19x19x18 | |
| 25x24x27 | |
| 14x29x15 | |
| 22x26x1 | |
| 14x17x9 | |
| 2x6x23 | |
| 29x7x5 | |
| 14x16x19 | |
| 14x21x18 | |
| 10x15x23 | |
| 21x29x14 | |
| 20x29x30 | |
| 23x11x5"; | |
| Assert.AreEqual(0, GetAmount(puzzle)); | |
| } | |
| private static int GetAmount(string puzzle) | |
| { | |
| return puzzle.Split('\n').Sum(x => | |
| { | |
| var dimens = x.Split('x').Select(int.Parse).ToArray(); | |
| var side1 = dimens[0] * dimens[1]; | |
| var side2 = dimens[1] * dimens[2]; | |
| var side3 = dimens[2] * dimens[0]; | |
| var smallestSide = Math.Min(Math.Min(side1, side2), side3); | |
| return 2 * side1 + 2 * side2 + 2 * side3 + smallestSide; | |
| }); | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| namespace AdventOfCode { | |
| public class Puzzle3 | |
| { | |
| [Test] | |
| [TestCase(2, ">")] | |
| [TestCase(4, "^>v<")] | |
| [TestCase(2, "^v^v^v^v^v")] | |
| [TestCase(0, "^><^>>>^<^v<v^^vv^><<^<><<vv^<>^<^v>^vv<>v><vv^^<>>^^^v<<vv><<^>^<^v<^>^v><<<v^<v<<<v<<vv<v<^><^>><>v>v^<<v^^<^v<><^>^<<^^^>v>>v^^<v>>^>vv><v>>^>>v^>^v>^<^^v>^>^^v<v>^^<v<>>v^^v><^><^<<>v^<^<^v<v>v^>>>v^v^>^<>^v<^^vv<v>^>^<>^^<vv^<><<v<^<^^>vv<>^>v<^>^v>v^>^v<>^><>><vv<>v^v<><>v^v>>>>v^^>^><^^<v<^><^<v>>^v^v<>v<<<^<<vvvv<<v^vv^>v^^^<^^^<v>>v<^v>>>>>v<^^^^>v<^<><v>>>>><v>>v^vvvv^^<v^<>^v<^v^>v><^>^v<<>>vv^>v>v^^>vv^<^vvv<>><>><><^^^<v<>^<^^^<v><^v>>v>^v<v^vv^<>^^^>v^^^v>>^v^^<^>>^>^<<v>>>^^<>>^vv>v^<^>>>><v<><><^^v<><<<<^^<>>^<vvv^><>v<v<<<<><v<<v>v<v^><vv<v^>^<^>v^^><^v>^^>v<>^v^<>^vv^><v^^vv>vvv>v>^<vv^>>^>>^>><>>>^^^^v<vv>^<>v^^><v^>^<>v<^^v><v<<><^v><>^^^^^v^v>>^^v><<><<vv>^^^^><^>v>><<<^v>v^^>^v^<^^v>v<^<<>>^v<<<v<<>>v<^v^><vv<v^v>v^<v>><v>^v<<<vv^>v<v>>v>>v><v><v^>v^^v>^v^>>>><>^>v>^v^>>>>v^<<vv<^v><<>v<v^<^^<<v<^v^^v^>vv><vv<v^<^>><^^>^<><^^<v<><^v^v^<^^>^<v><^<v>v^<<<^^v<v>^v>>><>^^>vv<<^v^<<<<^^>>>v>v<<<>^^>>>v>^>v>vv<<>^<^><v^>^^<^<v<<v<^>>^v^<vvv><>v^><<v>^^<v^vv^^^<vvv^<^>^>vv>><^v<^<<v<><<><<^^<><><vv>v>^<v>>^<>>^^v>vv^<^^v>><^vv^<<v^^><<>vv<v<><v<><v^^^v^v>^v<^<>v^^>><>^<^<v^<v^v^>v<<<^<<^>>>^^<^^v>v^<v>vvvv>v<>><^>^<<<<v^<v<>v^^^v<>v>^<v<<^^v^^<>^<<v^^<^<v>v>>v>>v^>^<vv<<<<<^<><>v><>>>v^>^v<^<><<v<^v^^<^<><^>^^^>^><>^><<vv>^<>vv<<v^v<<<<<>>>v<vv>^v>^>^>^<^><>v<><>>>^^<v>^<^v>>^<><v^><v^>>>v<v^^vvv^><v<v>v^>vvvv>>><^>v<>^^^>v>>v^<v<>v^>^<v^>^<<^>^>>v<<><<v^^>>v^<v^<^v^>^>v^><<^<v>v^<v>>^^<<v>v><<<^v^<>^<>^>>^<<v>^^<>^v<>v^>>><<v>><v^>^><v^<><v><>><v^<>vv>v^<^^^>v>^^<vv>>^v<><>>><>><^<>>v>v^^>^^<^^>^>>v>vv^^v<^<^v><vv<v<^>><<vvv<<><^>^v>^^^<<>v^<v<v><<v>^^v<<<>^^vv<^>vv>^>^<><<>vv<^>v^vv>^^^v><<^vv>^v<><v^^^^v^>vv^^<^<>^^v^<^vv<v<vv<>v>v^^<>^^>^^>^<><<^v>^><^^vvvv<><>^<v^^>v<>^><>v>><>vv^<<><<>><>v<^>^v>>^^v><<<>>^<^v^<v<<<v^>^^<^<><><^><<<<^<vv><v<<><vvv^^><vv>^<<vv<<<^v<>>><><>>v><<<v>vvvv^^vv<v>><<^v^vvv><><vv>v><>v<<<^<v^>><^^>v^<v>><v>^^^v^v>><<<v<^^>>^v<>v^<vv^^<<v<v>v<<<<^^^v^v<<>>>v>>vv>^^<><^v<v><>>v^>>>>>^>v^v^<^v^v^vvv>v<v<^>vv^<<v>vv>>v^^vv<^v>>>>vv<>v<>^^vv^<v>v^>>vvv<<<v<<^vv^^^^>v>v>^><<<^>v^><v<^<<<v>^v^^^><<><<<^^<^^<>^<v>^<v<<v<^^vv>v<^v><v><v<>^v<^<v<^<v^v><v>><v<v<<>^<v<>>><>^v^v<<^><v^<<v<v^>^>v><^>^vv^^<v<v<vv<v>^v^v^>^<<>>>>>v^<>^>v^vv^><<>>^^<>v^><v>^vvv^>v^v><>^><<>v>v<^<^><^^vv<<><>>v>>v><vv>>^v<<>^vv<>^vv>v>v>^>^>>><><<>v<v>^<<^v^^<<<><v>>vv<^<vv<vv^<<v<<^v><<>v<^^^<<^v^>^v>^^^v^v>>>v>v^v>^>^vv<^^<<vv^>^<<<vv>v^<><<^vvv^^><>vv^v>v>^><<^^^^vvv^<vvv>><^v<^>^<>>^<v<<vv>>><v>vv^<>><v^<v>^v>^>v>^<^<^^^<<vvvv^>>>>>>>v><vv>^<>^^v^><>><^v^^<v^v<<<<v^>><>v^v<vv<><^<<<<^>^^>vv>><^v<v^v<<>^vvv>v^^><^^<^<>>^^v^vv<>v<^<<<v^^^><v<vv<<>v>v<>^v^><v^vv^v^^v<^^v^^v><>v<^v>><<^<^v^>><<vv<<^>^<<v^<>^><>v><vv^v>>^<v<<<^>vv<^v>^>v<<v>^>>^>>v^<v<v>>^v<^v^v><<><>^><<<><v<vvvv<v^<v^v><>^<>^^^^v>^>^vvvvv>v>>v><<vv<<v<><<^><<^v><<v<<<v><vv<^>^v>>>>^v<^v<<>>^>^<<vv^<^>v>><<^>^>^v><><>^><<v<>v^><<^v^<^^><^^v^<<^v^^>>^v^<^><vv>v^^<<^^^<><>^>v^v>v^>^v^vv>^^>>>>^^<^>>>^^v<vv<><^^<vvv<^^^vv>v<v<v>><<<>^>^^>^>^v<<<<>>^<<>><v>>v>^^<^v<>v<>v^>v^><^<^^><v^^v>^^vv<v<<>><<vv<>>v>^<<<<v<<v>^><^^<^<^<v^<<^^v>^v<^>v^v^<v^vv^>^^><^>v^v>>^^v^><vv<v<v<v>>>>><<><v><v^v^<v^<^^<v<>^>v>v<>>>v>^^^^>><v^v^^v<<<>v^<<^<v>>>><^v^<<><v<>>v><><v<v^v>^v^^<v<^<^^v>><<vv<<vv><>>^>^>vv<^<>^vvv^v<v^^<>v^v>^^<<<<<>^v^>^<>v^^<>v^v<vv>^<>vv^<^vv>><v^^vvvvv>><<>v<vv^<^<vv^v^<>^^<v^<vv^<v^v^v<<^>^>^>^^>>>vvv>^>v>v>>>^>vv^><>^><>v>^^<v^>^><<v>><<<>>v<vvvv^>^v<^<>^<v>^<>^^<<><>^v<><>>>^vv<^<<^<^v>v<<<<<^^v<^v<><v<<><^>v>^v>>^v^><^^^^v<><><>vv^<>vv<^v<^^><v^<^><^^v^v^<^^<<><v>v<v<v^<<^v><>v^v<^>vvv><<^v>>v><><v<<^>>>v<^>>v>^<>><>^<v^v^<vv<<^>v<^^>^<^v<^<<^^v<>>^>^>^v^^v^v<v^^vv^<v>>v><vv^vv>v<>v^>v^^>^^>><v><v^<<><<>><<^^>><^v<v<><<><<><v<v^<^<v>>>><v^^v^^>>>^^^^^<<vv<^><>^<<<vv^^^>^><<<v<^v>^<v<^>^vvv<<>vv><<>v>v^v>>>>>^<>><^^^><<<<v><<vv>>>v<^<vv^v^<<v>>>>^^vvv>v<>><v>>>v>>^v^vvv<<>vvv<<^^^<>vv^^v<<>^^^>>^<^v^<^^>v^><v>>^<<^v<<vv<vv>v^>>^>v^><^><>^>>>vv>><^^^>vv<<^^vv><^<>^>^^<^<>>^vv^>>^v><>v^>>><<<^^<^>^>v<^>^<^^<>>><^^<>^v^<<vvv<v><>vvv><v>v^v<<^<v>^^><<^vv^v>v>v<<^v^<<<>^><><vvv>v>^vv^v<>vv^>^^<^>^>v^^<vv^>v><v<<<><>>^v<^<><><^<v^^<<^<v>vv<><<>v^<v^>^>^^<><<>^<^<<v^^v<v^<><<>v>><^<<>^>^v^v<v^v><^>>^v<^>v<<>^^^<^v>>>^<v>vvvv<<v^<^^>vvvv>v<>v<v><vvvvv>^<><>vvv<>^<<>^>>>>v^<^<><^v>v^>>v><>^><<v^>^<<>^>^v^<v^^>>^v><v>^<v><>v^<^^>v>^>>>v^v>>>^<>^<>>>>>v>>vv^v<><<<><><v><<vv<<v<><>>vv<^<vv>^v<<>v^v<^v<><v>>^v>>vvv^^v>>v>^>^>v><v><^>^^<<>^v<^<<<<^>v<^>>v^<^v>^v<<>^>^vvv<^^vv>^vv>vv<>>v>v<v>>v^<<<<<^^v^>v>^<<<v^v>>v<v><vvv><v>^<vv><<>>^<^>^^<>>>>^<^v<>v^^>^<^^v<^><>><v>>^v^vv<^v<^><<vvv<>><>><^^>^<^v^<^<>v<<<^v>v^^^<>v^<v^>^v^>><>^^<v<^><<^^v^<>^<^vv>>><^v><v^>vv<^v<<<v^>>v>v^v>^<v>v<^<>v^vvv>^vv<<<<v><^><v>>^^>><^v><<^>v^^<<v^^<^<><<<<>^<v<^v^>v<<^^>v<<<<<vvv<v<^>^>^>^>>^>>>v^<<v>>^^v><vv<^v<v<^^^>>>^vvv<^v<>>>vv>^^><^v>vv^>>v>v^<>^<vv>^>^<<^>^^^>>^vv>^^>vvvv<>>^^^^>>>v>v^^>vv>vv^<<>^><^<v^vvvv><v<><v>><<<v<v<<^v><vv^vv^<>>>^>^<v<^v<>><^<vv^^><v>v^>v^<><v^vvv>^>v^^v^>^^>v<<<<^<<^>>v>v^^^<<<v>>>^^v>v<v><<<<^^^v>^vv^>><>^v<v<<^^<<<<><>>>v>vvv^v^^v^>>vv>^>><>^v><^v^><^^>vv>^<^<^>><v>v>><><><v>^>^>v>vv>vv>^^>v>v^><v<<v^<>^>^v>^^v>^<^v<>>vvv^^>^>vv<v<v<<^<^<v^<>v^^v<^<^>vv^^<v><^^^>v>vv<<v>v<<v^<v^^><vv>^>^v^<^>v<^>^<>vv^><v<^><>>^>>^<^><<>^<^>v>v><>>>^<<^><<v><^v<v><>>vv<^><v^>>v>v>>>>^^>v<^v^>><<^<>>v><^><<^>^<vv^^<><<>><vvvv^>^^<><^^v>^^>vv>^v<v>>^^v^<v<^><^<<>>v^^^<^><^<<><<v<>><<>^v>vvv^vvv^^>>^<^<v>><>^<<<<^^<>>>v^<<^^v>><><<v<^>v>^v<v^>v>vv^><>^><<><^^>^>^<><>><^^<v^v<^><><><v>^<v<<v^<<^^^v<v<^v<>>><^v<<<<>>^v>^^vv^v^<<v>><<<v>vv>>v>>^v^<>>vv^<^>^<<>v<<<^vv<^vv^vv<^v^^^<vv^>v>>v<^^<^^vvv<^^v<>>>^>v^><v>^^><>vv>v>v<<<^^v<^vv^v>^^^>>>^^<>^^<^vvv>><><<><^<v>><<>^>^^<v^v^>vv>vv<v>^^<^^<<><><<v><v^^>v><v><<>v>vvv<^^^^<^>>><<<^^^<^>vv^^v>>v<<v^^<vv^<^>vvv^^v^^<^<vv>v<^<>^<<vv^^>^v>>^><><>v<v<v<>><v>>>^^>>v^><v^^<^>><>v<><<v^v<v<<>>>><>>>>><<^vvv<<><><<>^><><<^^v><<^>v>^>^v>v>>^^<><^>vv<^<^v>v<><^<<v<><^><>^^^<v^<><vvv^^^<>^^v><v<<<v>><>^>^vv<v^<vv>v>v^vv<v^v<v>^v^>v><>v^><>v>^^^^><<vv^><v<<v<^<>^v^^^>^^><<<v<^<v^>^^>v><vvvvv^<^<v^^>v<^v^^vv^<<<<v><^>v>v^v><><v^<<^<<v<^^^>^><v^v^<><><>^v<v>^<>^v>^v>v^<><^><v>>v<<^><^vv^<><^<>><>><v<v><<^^^^>v<^<^vv<><^vv><<^<<v>v^>>^v>^>v^^v>vv<v>v<<v>v<>^>>vv^>>><>^v^^<^>v<<^<^^v^^v^<<v<<v<^v<>vv^<v>><^v<^>>>vv^^<v^<>^^v<v<v>>^><^^^<><<^^>v<<vv>><<vvv>><<v^v^>><>vv^><<^>^><^v<^<^<vv<^^vv>v^v<<<<<<><<vv^vv>vv>v<^><<><><<>>v>><v><^>^v>^v^<>v^^^><^^<<<^vv^vv>^v^vvv^^>v^<v>><^<^<^<>^vv<vv^v^^>^^^>vv^v>>><<<^<>>v>v<^^<><v>>><><^v^^<<><<<>^<^^v^>v<vv^^^^>><v><^<<v<<v<>^>^>>^<>^v><>>^<v<vv^<<^<<>vv^>^^<<<^v<>>^v<>vvv<<^^<<><vvvvv<<^<^^<>>>>^^<><>^><>^v<v^^v<<v^^<^<^>v<v>^v<^>^v<>v^vv<><<v>^vvv<><<^>>^^><><>^<>^>v^^v^><v<><>>v><v^<v<<v>><^v>^<v<^>v<<<>vvv^<^^v<vvv^vv<>^<>^>>v<>^^><><v>>^><^^vv>><<>><v><^><>>^vv>v<vv<>v^v^^v<<^^<vv>v^^vv<<^<<><>^<><v^><^<^<>>^vv<v>v>>^<^vv>^vv^>v>^<><^><^<>v^v^^<^<>^^v>>><^v<>v^v<<^>v><>^^<<v^v<>v^>>v>^<><vv^v<v^<vv<>^>^>^<^>v><<><><><<<>^>><v^^><^>><v>>^v<<<^<<>^><<^>>>>>v<^>v>>v^<v^>^>v^^><>v^v^vvvv<v<v<>v>>><<>^<<vvv><v^v^>v<v^^^>>^<v>>^vv^^<vv><^>>v<v^><vvv<^^>>vv^v<^<>^v^<<v>^<<><<<^vvv^>^^<<>>><v<^>vv<<^<><^v<^<><<^^>vv^v>v^^^>>>>^>vv<<v>v>>^^v^^><>v<<^><^<v^>>^>v^v>><^v^>v<<^<v><^<^<^<>>v^^>><<<>v<v>v<^^>^vv<<<^^<v<>v^^>v<<><^<>^^>^v<>v>><^^^vv^>^><>v^^<v^<>>^<v^^^><v<><vvv>v>^<<^v>^>>>>><^^^<>v<v>>v^^<^v^>>v^<<v^>^>v^v>>>>^>>vv<>^<^v><v^^<>v>v^v>^<>^>v<vv><<v<^v<<^v<<^v^vv<><>^<>>^<>>^<>v^><<>^v>>^^^^<<^v><>^<^>^^v><^^<^<v^<^^v>^v><vv>v<<^>^>><<^^^vvv<<^vv<^^>v^^vv^<^^<<^^>>^^<vv<v<<v^^<<v<^vvv<<><<v>v^>>v^^>v<^>^><v<^>v<v^v<v^^<>v>><<v^v^v<^^^><v>v><^<^vv>^^v>^>v<<^vv><^^^^^^><<^>>>^v<>^^v<<<>><<<v^><>^<<<v>v^>^^^<^><v>^^^v<<>v<v>^<v^>><<^^<<^v<<>^v>>vv>><v<^><v<<<vvv><vv><<^v^^<v^vvv<^v>>v^v<v^v^>>^^v<><^^^<^^>v>^<><v<<v^^>vvv^v^^<v<v^v>^>v^^v<^><v^^<<<<>^^>>^v<><^><^<<^vv^<><<>v^vv^<v^<><<<^^>v<<>>>v<>v<><<<v>^v>^^v>^^>v>^>^>v<>><>^>^>^vvvv<^<v^<>^^^^v>v>><<v>>^<vv>>^<v<^v^vv>><>^^>v^^<<><^<v>><<<<>v>^^><v^^v<<v<><vv^v>^<v^^>v<<<<v^v<<>>vv<v<<<v>v>>v<^v>>v>v^<<<>^>^>^<>v<^^vv><^v<<^v<vvv^vv>v<^<<^^vv^^>vv<^>v>^^<<v^<<^^v<>^>v<<^^<^>^^^v^^<v<^<^>>>v^vv^<^v>^<>^<^<v<^v>>>^<^v<><v<^vv<v>v><v^v^^v<vv><^^<><>^>v<^<^vv>><^v><v<>^<>^^>^<><<<v^>>^<>><<><v>vvv^<<^<vv<v><v<^<<<^>^>>v<^>>vv>^v^^^v<>v<>><>^vv^>vv^")] | |
| public void SolvePuzzle(int expected, string puzzle) | |
| { | |
| Assert.AreEqual(expected, GetHousesVisited(puzzle)); | |
| } | |
| private static int GetHousesVisited(string input) | |
| { | |
| var houses = new List<House>(); | |
| var x = 0; | |
| var y = 0; | |
| for (var i = 0; i < input.Length; i++) | |
| { | |
| var pos = input[i]; | |
| switch (pos) | |
| { | |
| case '>': | |
| x++; | |
| break; | |
| case '^': | |
| y--; | |
| break; | |
| case 'v': | |
| y++; | |
| break; | |
| case '<': | |
| x--; | |
| break; | |
| } | |
| if (!houses.Any(house => house.X == x && house.Y == y)) | |
| { | |
| houses.Add(new House() | |
| { | |
| X = x, | |
| Y = y | |
| }); | |
| } | |
| } | |
| return houses.Count+1; | |
| } | |
| } | |
| class House | |
| { | |
| public int X { get; set; } | |
| public int Y { get; set; } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| namespace AdventOfCode { | |
| public class Puzzle4 | |
| { | |
| [Test] | |
| [TestCase(609043, "abcdef")] | |
| [TestCase(1048970, "pqrstuv")] | |
| [TestCase(0, "bgvyzdsv")] | |
| public void SolvePuzzle(int expected, string puzzle) | |
| { | |
| var stopWatch = Stopwatch.StartNew(); | |
| Assert.AreEqual(expected, Md5HashNumber(puzzle)); | |
| Console.WriteLine(stopWatch.Elapsed); | |
| } | |
| private static int Md5HashNumber(string secretKey) | |
| { | |
| var number = 0; | |
| var md5 = MD5.Create(); | |
| while (true) | |
| { | |
| var inputBytes = Encoding.ASCII.GetBytes(secretKey + number); | |
| var hash = md5.ComputeHash(inputBytes); | |
| for (var i = 0; i < 3; i++) | |
| { | |
| if (i == 2 && hash[i].ToString("X2")[0] == '0') | |
| { | |
| return number; | |
| } | |
| if (hash[i].ToString("X2") != "00") | |
| { | |
| break; | |
| } | |
| } | |
| number++; | |
| } | |
| } | |
| } | |
| public class Puzzle4b | |
| { | |
| [Test] | |
| [TestCase(0, "bgvyzdsv")] | |
| public void SolvePuzzle(int expected, string puzzle) | |
| { | |
| var stopWatch = Stopwatch.StartNew(); | |
| Assert.AreEqual(expected, Md5HashNumber(puzzle)); | |
| Console.WriteLine(stopWatch.Elapsed); | |
| } | |
| private static int Md5HashNumber(string secretKey) | |
| { | |
| var number = 0; | |
| var md5 = MD5.Create(); | |
| while (true) | |
| { | |
| var inputBytes = Encoding.ASCII.GetBytes(secretKey + number); | |
| var hash = md5.ComputeHash(inputBytes); | |
| for (var i = 0; i < 3; i++) | |
| { | |
| if (i == 2 && hash[i].ToString("X2") == "00") | |
| { | |
| return number; | |
| } | |
| if (hash[i].ToString("X2") != "00") | |
| { | |
| break; | |
| } | |
| } | |
| number++; | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment