Colin McMillen
3 years ago
3 changed files with 387 additions and 2 deletions
-
632020/Day03.cs
-
32020/Program.cs
-
3232020/day03.txt
@ -0,0 +1,63 @@ |
|||||
|
using System; |
||||
|
using static System.Console; |
||||
|
using System.Collections.Generic; |
||||
|
using System.IO; |
||||
|
using System.Linq; |
||||
|
using Xunit; |
||||
|
|
||||
|
namespace AdventOfCode { |
||||
|
|
||||
|
public class Day03 { |
||||
|
|
||||
|
static int CountTreeIntersections(string[] lines, int dx, int dy) { |
||||
|
int count = 0; |
||||
|
int x = 0; |
||||
|
int y = 0; |
||||
|
while (y < lines.Length - 1) { |
||||
|
x += dx; |
||||
|
y += dy; |
||||
|
string line = lines[y]; |
||||
|
char tile = line[x % line.Length]; |
||||
|
if (tile == '#') { |
||||
|
count++; |
||||
|
} |
||||
|
} |
||||
|
return count; |
||||
|
} |
||||
|
|
||||
|
static int Part1() { |
||||
|
string[] input = File.ReadAllLines(Util.RootDir + "day03.txt"); |
||||
|
return CountTreeIntersections(input, 3, 1); |
||||
|
} |
||||
|
|
||||
|
static long Part2() { |
||||
|
string[] input = File.ReadAllLines(Util.RootDir + "day03.txt"); |
||||
|
long result = CountTreeIntersections(input, 1, 1); |
||||
|
result *= CountTreeIntersections(input, 3, 1); |
||||
|
result *= CountTreeIntersections(input, 5, 1); |
||||
|
result *= CountTreeIntersections(input, 7, 1); |
||||
|
result *= CountTreeIntersections(input, 1, 2); |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
[Fact] |
||||
|
public static void Test() { |
||||
|
string[] example = |
||||
|
@"..##.......
|
||||
|
#...#...#.. |
||||
|
.#....#..#. |
||||
|
..#.#...#.# |
||||
|
.#...##..#. |
||||
|
..#.##..... |
||||
|
.#.#.#....# |
||||
|
.#........# |
||||
|
#.##...#... |
||||
|
#...##....# |
||||
|
.#..#...#.#".Split('\n');
|
||||
|
|
||||
|
Assert.Equal(7, CountTreeIntersections(example, 3, 1)); |
||||
|
Assert.Equal(218, Part1()); |
||||
|
Assert.Equal(3847183340, Part2()); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,323 @@ |
|||||
|
....#...##......##..#..#.#...#. |
||||
|
..######...#......#....#..#.##. |
||||
|
..#.#...##......#.#..#..#....#. |
||||
|
..#.....#..#.#........#.#..#..# |
||||
|
#......##..###...#.#..#.....#.. |
||||
|
#.......##...###...#....#...... |
||||
|
.....##...#......##.#.#..#.##.. |
||||
|
.........#......#.....#......#. |
||||
|
..#.#..#....#....#......##.#.## |
||||
|
.#...#..#.............#.#..#.#. |
||||
|
....#..#.#.##.#....#..#..#....# |
||||
|
...#..#.....#.......#...#..#..# |
||||
|
.....#.....#.......#..#...#.... |
||||
|
.##.......#...#..#........#...# |
||||
|
...#.......#.#.#...#.#.#......# |
||||
|
#....#..#.....#......##....#..# |
||||
|
###.#......#.#.#.#..#....#....# |
||||
|
......##......#.#...#...#..#... |
||||
|
.....#......#.#.#......#.#..... |
||||
|
...##...#..#........#..#.##.... |
||||
|
..##.#.#..#...###..........#.#. |
||||
|
.#..#..#.....#.........#.###.#. |
||||
|
....##.....#...#...##..#.##...# |
||||
|
....#.##....#.....##......#.... |
||||
|
........#.#.........#.#.......# |
||||
|
#....##.#....#..#...#.......... |
||||
|
#..###......#....##..........## |
||||
|
....##.#.....#..#.##......#.... |
||||
|
#..#......#......#............. |
||||
|
...##.....##.......#.......#... |
||||
|
#...#.#.....#..........#...###. |
||||
|
#.....#..#.#.###...#......###.. |
||||
|
...##.#......#........#..#..... |
||||
|
......#.....###.#...##........# |
||||
|
.#......##......##....#....#... |
||||
|
..#.#..#.....##....#....#..#... |
||||
|
..#.#.....#.##.#.....#.....#... |
||||
|
....#.......#...#.........##... |
||||
|
.#....#..#.......##.......#.... |
||||
|
..#..##.....#...##.##.#.#...... |
||||
|
.##.#....#............#.......# |
||||
|
.......#...#..#.#.##.....##..## |
||||
|
..###....#..#.##........##.#... |
||||
|
....#.#..#.....#..#.#.....#.... |
||||
|
..#..#.#..............#..#..... |
||||
|
.......#.#.#.........#......#.. |
||||
|
...##..#.#...#......##.#....... |
||||
|
#....#.#.........#...#....#..## |
||||
|
.#..#.#...#.......#.#.#....#.## |
||||
|
.#..###.#..#.#.....#..#........ |
||||
|
#.#..##.###.....##.........#..# |
||||
|
#...##...#..##..#..#..........# |
||||
|
.#...#..#...................... |
||||
|
...##..###...........#.#...##.. |
||||
|
..........#.#....#.#........... |
||||
|
..#....#....#..#....#.#.#...... |
||||
|
.#..#.....###......#...#...#... |
||||
|
#.##..#..#.........#..#....#... |
||||
|
........#......#...#.........#. |
||||
|
..#.....#.#..##...#.#.#...##... |
||||
|
..#...........#.##..#.#..#.##.. |
||||
|
..............##...#.#......#.. |
||||
|
#.#..#....#...##.###........#.. |
||||
|
.#...#..#........#........##..# |
||||
|
.....##..#...#.....#.#......... |
||||
|
.#...#...#....###...#.#.#..##.. |
||||
|
....#.........#....###..##....# |
||||
|
.#....#...####...##....####.#.. |
||||
|
..#..#.......#..#......#.#.#... |
||||
|
....#....#.......##..#.#....... |
||||
|
..#....#...........##.#.##..... |
||||
|
#..#..#...##.##....#.#.#.###.## |
||||
|
...#...#....#.#...##...#....### |
||||
|
......##........#.........#.#.. |
||||
|
....#####..#..##.......#.#....# |
||||
|
....##..#...###....#..#.....#.. |
||||
|
..#........#..#.#.....#....#... |
||||
|
..#....#......#..#...#......#.. |
||||
|
...#.....##...#.#..##.....#..#. |
||||
|
...#..#.......####.##...#...... |
||||
|
.....#..#..#.##..##....#..#.#.. |
||||
|
..#..#..##.#.#.##..#..#...#.... |
||||
|
...#..........#.........#....## |
||||
|
.##.....###...............#.##. |
||||
|
...##...........#.#.#......#..# |
||||
|
.#...#.#.##....#....#..#....... |
||||
|
.#...###.#....#..#..#..#......# |
||||
|
#..#........###...........#..#. |
||||
|
..#...#......#.#.#......####.#. |
||||
|
...#.#....##.#.....#.....##.... |
||||
|
...###..#.#.#...#.....#.###..#. |
||||
|
.#.#..#...##......#..........#. |
||||
|
##.....#.......#.#..###...#.#.. |
||||
|
##.###....#.....#.....###.#.... |
||||
|
#...#..##....#.#...#...#......# |
||||
|
.....##.#........#.###......... |
||||
|
.#..#..#.#......##.#...#.#..... |
||||
|
#..#.#........##...........##.# |
||||
|
#...###..#..####..#.#.......... |
||||
|
..#...#....#...##.#....#....##. |
||||
|
......#.#........#.....#..#.... |
||||
|
#.........#...#.....#...#..##.. |
||||
|
#....#.........#...#.##..###.#. |
||||
|
#...###...#.##.#.#............. |
||||
|
#.#....#....#......#....#.#...# |
||||
|
##...#.##......#..#.#....#..... |
||||
|
....#...#.##....#.............. |
||||
|
.........##..........#..##..#.. |
||||
|
......##....#.#......#......... |
||||
|
..#.#..............#......#..## |
||||
|
...........##.......#.#.#...... |
||||
|
##...#........##.......#.#..... |
||||
|
....#...#...#....#.#......##... |
||||
|
...#..#.#.#.........#..#.#....# |
||||
|
.##.#...#.#.........#.....##.#. |
||||
|
#.#.....#.#.....#.............. |
||||
|
..#.#..#....#..........#..##... |
||||
|
...#..#....................#..# |
||||
|
...........#...........#...#..# |
||||
|
............#...#............## |
||||
|
..#....##......##...........#.. |
||||
|
..#..#..#....#....##......##.## |
||||
|
##..........#..##.##.#...#..... |
||||
|
............#..#........###.#.. |
||||
|
###...##.#.#....#....#.#....#.. |
||||
|
...#......##...#.......####.... |
||||
|
.......#..#..#.#.....#......... |
||||
|
........##.......##.....#...... |
||||
|
#.#...#.###....#..#...##....... |
||||
|
...#.#....#..#####.#..##.#..... |
||||
|
..#.#..##.......###...#.....#.. |
||||
|
..#.......#..#...#...#..#.##... |
||||
|
......#..#.......#.....#....#.. |
||||
|
.......#........#.#.......##..# |
||||
|
.#.#.....#.......#.......##..#. |
||||
|
..#.#....#.#.#####.....#...#... |
||||
|
#..#............###.......#..#. |
||||
|
........##.........#..#...###.. |
||||
|
.#............##...#.....#..... |
||||
|
.#..##..#....#....#.......#.... |
||||
|
....##..........##............. |
||||
|
.##..........#..#..#....#...#.. |
||||
|
...#..#..#............####..... |
||||
|
.............#..#.##..#.#.##... |
||||
|
.....#........#....#.#.......#. |
||||
|
###.#..#.#...#....##........... |
||||
|
....#......#...#....##.......#. |
||||
|
.......#.#...#.#...#........##. |
||||
|
..........#........#..#.##..... |
||||
|
##..#.#.....##.#............... |
||||
|
.....#....#................#... |
||||
|
...##....#........##.#....#.... |
||||
|
.....##...###....#.#..#.......# |
||||
|
.....#.#.........##....###..... |
||||
|
.#.....##......#..##..##...##.# |
||||
|
.#..............#.....#.#...... |
||||
|
.##......#..#..#......##....... |
||||
|
.......#..................#.... |
||||
|
...#.#...##......####.........# |
||||
|
#....#####.#.#..#..#..#...#...# |
||||
|
##.#...#.......#....#...#...### |
||||
|
...#........#.....#...#.##..... |
||||
|
..##....#.......#....#.......## |
||||
|
#......#..##...#..##.#.....#.#. |
||||
|
..###........#.#..#........#.#. |
||||
|
...#.###..........#.....#.#.#.. |
||||
|
#.###.....#...#...#..##..###... |
||||
|
#....#.#.....#.#........#...... |
||||
|
........#.......##.......#..... |
||||
|
...........#...#......##....... |
||||
|
............#...#....#..#.....# |
||||
|
#.#.#.#....#.....#.#..........# |
||||
|
#.##...#...#..#....##.#.......# |
||||
|
...#..#......#..#...##..##..#.. |
||||
|
#....#......#.#.....##.#..#.... |
||||
|
#....#..##.#......#.#.....#..## |
||||
|
.#..##....##....#.#...#...#.... |
||||
|
#.#.###....#.#............#...# |
||||
|
.#.#....#..#..........#....#.#. |
||||
|
......#..#.#...............##.. |
||||
|
..#......###.#..........#.###.. |
||||
|
....#.##.#..#...##..#.#...#.... |
||||
|
..............#...##.......#.## |
||||
|
.#...........#....#....#.##.... |
||||
|
#..#....#.....#...#.....##...#. |
||||
|
.........#...#.##.......#...#.# |
||||
|
.....#......#.........#.#..#... |
||||
|
##..........#.#..##...#.#.#.... |
||||
|
##..##.#..#..#.....#.##....#... |
||||
|
........##....#.#.#....#......# |
||||
|
.#.##...#.###....#.........#..# |
||||
|
..........#....###..#.........# |
||||
|
#.#..#.#...#.......#..##....... |
||||
|
..#....#...###..............##. |
||||
|
#..###.....####...#..#..#...#.. |
||||
|
......#..#...###........###.... |
||||
|
..#.....#...#.......#....###..# |
||||
|
.#.........#.#.#....#.#.......# |
||||
|
#.#.###.#.#...........#........ |
||||
|
......#..#.........#........#.. |
||||
|
...........##.#........#.#...#. |
||||
|
.....#.#......##.......#.....## |
||||
|
...##...#............#..#.....# |
||||
|
.....#..##....##...##.#..#.#... |
||||
|
...#...#........#.#......##.... |
||||
|
........#..##..#..#......##.#.. |
||||
|
.#.#.....#.....#...........#.## |
||||
|
.#...#.#............#......#... |
||||
|
.....#...#........#....#..#.#.. |
||||
|
...##....#..#...#.............. |
||||
|
#....##.#.#............#....... |
||||
|
#..#..#.....##..#........##.#.# |
||||
|
##..#.#....#....##.......###..# |
||||
|
.#.#.#.....###.....#.#......### |
||||
|
.....#..#...###...#....#.#...#. |
||||
|
.##.....................##....# |
||||
|
.#.....#.........#....#.....##. |
||||
|
#...#....#.#...###.......#.#..# |
||||
|
...#.................#.#....#.# |
||||
|
.##...#.#...................... |
||||
|
.##.#........#...##............ |
||||
|
.#....#.....#.........#.##..##. |
||||
|
#......#...##..#.........##.##. |
||||
|
......#......#...####..#.##.... |
||||
|
.###....#..##......#.##......#. |
||||
|
..#...#....#..#.......#.#...... |
||||
|
#....#...#.................#.#. |
||||
|
....#.#.#..#...#..#.......#.#.# |
||||
|
#.#...##.......#.....##.#...... |
||||
|
#.........#.....##..##..#...... |
||||
|
....#..##..#.....#..#..#.#..#.. |
||||
|
......#.#..#.#.#....#.#.......# |
||||
|
.##......#..#....##...##..#.... |
||||
|
..#..#......#...##..#.##.....#. |
||||
|
..#..#.......#.#....#.....#...# |
||||
|
....#.#.....###...#.......#.#.. |
||||
|
..#....##.....##.#........##... |
||||
|
#...............##....#.....##. |
||||
|
.#.........#....#...##.###.##.# |
||||
|
.#.##..#.............#.#.#..#.. |
||||
|
.#.....#.................##.... |
||||
|
..####.........#.#......#.#..#. |
||||
|
#.......#..........#.#........# |
||||
|
.#.#...##.....#.#.......#....#. |
||||
|
..#.##.#.......###....#....#... |
||||
|
.#....##.............##.#.#.#.. |
||||
|
#.#.....#.#.#.#..#......##..#.. |
||||
|
.............#..........#.#.#.. |
||||
|
...#.#.............#.#...##.... |
||||
|
.......#..#.#.......#..#.#....# |
||||
|
.............#.........###..#.. |
||||
|
.#.#..#....#.....#..#.....#...# |
||||
|
#.....#....##..##.#..#........# |
||||
|
..##..###.....##....#.#..#..... |
||||
|
..#...##....#...#.#..........#. |
||||
|
...##..##.#.....#....#......... |
||||
|
..#...#........##.#..#........# |
||||
|
#.............#.###......#.##.. |
||||
|
.#...#........#...........#...# |
||||
|
..##.......#.#..##.##......#... |
||||
|
...#.#...##....##..#........... |
||||
|
.#......##........#....##....#. |
||||
|
.........#..#....#...#..##.##.. |
||||
|
....#..#.#...#.......#.#.##.... |
||||
|
...#.#......#.#..#..#.#....#..# |
||||
|
.......#........#.........###.. |
||||
|
#.#..#.#.........##............ |
||||
|
##..##..#.##..###...#.#...#.... |
||||
|
.#....#.#..#...#....#.##.....#. |
||||
|
.#.#.#.#........##...#..#.#.##. |
||||
|
.#..#.#..#...........#..#...... |
||||
|
..#.##.#...#....#.........#...# |
||||
|
.....##...#.#...#...#....#..... |
||||
|
..#..........#.#.#.......##.#.. |
||||
|
#.#............#..#.....#..#... |
||||
|
..#...........##.#.##.#....#..# |
||||
|
#..####.....#............#..... |
||||
|
.##......#####.#..#.....#....#. |
||||
|
...##..#.#......#.#..#..#...##. |
||||
|
#....................#.##...#.# |
||||
|
...#............#.............# |
||||
|
....#.##..........#.....#...... |
||||
|
....##..##....#.#.............. |
||||
|
...........#....##.#.....#..... |
||||
|
....#.....#....#....#......#... |
||||
|
#...##........#...#........#.#. |
||||
|
........#.....##..#.##.#..#.#.# |
||||
|
....##......##....#.....##....# |
||||
|
...#.#........##.......#...##.. |
||||
|
#......##..#.#.#....##......#.. |
||||
|
..#.......#.......##..#.##..... |
||||
|
.#...#...#.#.............##.... |
||||
|
......#.#.#.........##...#..#.# |
||||
|
.....#..####....#.##..........# |
||||
|
...#...#.#....#.....#..#.....## |
||||
|
.........#.......#......###.... |
||||
|
........##..##..#.#.#...###...# |
||||
|
.#..##.#....#...##.....#.#.#... |
||||
|
........##...#...##..#......... |
||||
|
.........#.......#.##..#...#### |
||||
|
#......#.....#..............#.# |
||||
|
##..##.#.##.....##...........#. |
||||
|
#.............#.........#...... |
||||
|
...####.#.##..#.#.#.##.#......# |
||||
|
..#.....##....#...#............ |
||||
|
#..............#......#...###.. |
||||
|
..#..#.#...#.##.........##..... |
||||
|
..#...##..#........#..#.##..##. |
||||
|
......###...#..#....#..#.###... |
||||
|
...##.##.###.....##.#.......#.. |
||||
|
#....#..###..#.......#.#.#..#.. |
||||
|
..##.............##..##...###.# |
||||
|
.#.#..#.........#..........#... |
||||
|
.........#.#.....##...#..#...## |
||||
|
....#..#....#####..#...#..#.... |
||||
|
...#.....#.....#...#.#..#.#.... |
||||
|
.#..#.............#.......##.#. |
||||
|
...##.......#.#.....##......#.. |
||||
|
...........##..#.##..###...#.#. |
||||
|
...........#...........#...#..# |
||||
|
..#....#.##.#..#..#...........# |
||||
|
..#.....##...#......#...#...... |
||||
|
...###.###.....##..........#..# |
Write
Preview
Loading…
Cancel
Save
Reference in new issue