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