day 3 solution
This commit is contained in:
parent
bd144bd7e8
commit
13f7672ca6
63
2020/Day03.cs
Normal file
63
2020/Day03.cs
Normal file
@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -19,8 +19,7 @@ namespace AdventOfCode {
|
|||||||
|
|
||||||
public class Program {
|
public class Program {
|
||||||
static void Main(string[] args) {
|
static void Main(string[] args) {
|
||||||
Day01.Test();
|
Day03.Test();
|
||||||
Day02.Test();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
323
2020/day03.txt
Normal file
323
2020/day03.txt
Normal file
@ -0,0 +1,323 @@
|
|||||||
|
....#...##......##..#..#.#...#.
|
||||||
|
..######...#......#....#..#.##.
|
||||||
|
..#.#...##......#.#..#..#....#.
|
||||||
|
..#.....#..#.#........#.#..#..#
|
||||||
|
#......##..###...#.#..#.....#..
|
||||||
|
#.......##...###...#....#......
|
||||||
|
.....##...#......##.#.#..#.##..
|
||||||
|
.........#......#.....#......#.
|
||||||
|
..#.#..#....#....#......##.#.##
|
||||||
|
.#...#..#.............#.#..#.#.
|
||||||
|
....#..#.#.##.#....#..#..#....#
|
||||||
|
...#..#.....#.......#...#..#..#
|
||||||
|
.....#.....#.......#..#...#....
|
||||||
|
.##.......#...#..#........#...#
|
||||||
|
...#.......#.#.#...#.#.#......#
|
||||||
|
#....#..#.....#......##....#..#
|
||||||
|
###.#......#.#.#.#..#....#....#
|
||||||
|
......##......#.#...#...#..#...
|
||||||
|
.....#......#.#.#......#.#.....
|
||||||
|
...##...#..#........#..#.##....
|
||||||
|
..##.#.#..#...###..........#.#.
|
||||||
|
.#..#..#.....#.........#.###.#.
|
||||||
|
....##.....#...#...##..#.##...#
|
||||||
|
....#.##....#.....##......#....
|
||||||
|
........#.#.........#.#.......#
|
||||||
|
#....##.#....#..#...#..........
|
||||||
|
#..###......#....##..........##
|
||||||
|
....##.#.....#..#.##......#....
|
||||||
|
#..#......#......#.............
|
||||||
|
...##.....##.......#.......#...
|
||||||
|
#...#.#.....#..........#...###.
|
||||||
|
#.....#..#.#.###...#......###..
|
||||||
|
...##.#......#........#..#.....
|
||||||
|
......#.....###.#...##........#
|
||||||
|
.#......##......##....#....#...
|
||||||
|
..#.#..#.....##....#....#..#...
|
||||||
|
..#.#.....#.##.#.....#.....#...
|
||||||
|
....#.......#...#.........##...
|
||||||
|
.#....#..#.......##.......#....
|
||||||
|
..#..##.....#...##.##.#.#......
|
||||||
|
.##.#....#............#.......#
|
||||||
|
.......#...#..#.#.##.....##..##
|
||||||
|
..###....#..#.##........##.#...
|
||||||
|
....#.#..#.....#..#.#.....#....
|
||||||
|
..#..#.#..............#..#.....
|
||||||
|
.......#.#.#.........#......#..
|
||||||
|
...##..#.#...#......##.#.......
|
||||||
|
#....#.#.........#...#....#..##
|
||||||
|
.#..#.#...#.......#.#.#....#.##
|
||||||
|
.#..###.#..#.#.....#..#........
|
||||||
|
#.#..##.###.....##.........#..#
|
||||||
|
#...##...#..##..#..#..........#
|
||||||
|
.#...#..#......................
|
||||||
|
...##..###...........#.#...##..
|
||||||
|
..........#.#....#.#...........
|
||||||
|
..#....#....#..#....#.#.#......
|
||||||
|
.#..#.....###......#...#...#...
|
||||||
|
#.##..#..#.........#..#....#...
|
||||||
|
........#......#...#.........#.
|
||||||
|
..#.....#.#..##...#.#.#...##...
|
||||||
|
..#...........#.##..#.#..#.##..
|
||||||
|
..............##...#.#......#..
|
||||||
|
#.#..#....#...##.###........#..
|
||||||
|
.#...#..#........#........##..#
|
||||||
|
.....##..#...#.....#.#.........
|
||||||
|
.#...#...#....###...#.#.#..##..
|
||||||
|
....#.........#....###..##....#
|
||||||
|
.#....#...####...##....####.#..
|
||||||
|
..#..#.......#..#......#.#.#...
|
||||||
|
....#....#.......##..#.#.......
|
||||||
|
..#....#...........##.#.##.....
|
||||||
|
#..#..#...##.##....#.#.#.###.##
|
||||||
|
...#...#....#.#...##...#....###
|
||||||
|
......##........#.........#.#..
|
||||||
|
....#####..#..##.......#.#....#
|
||||||
|
....##..#...###....#..#.....#..
|
||||||
|
..#........#..#.#.....#....#...
|
||||||
|
..#....#......#..#...#......#..
|
||||||
|
...#.....##...#.#..##.....#..#.
|
||||||
|
...#..#.......####.##...#......
|
||||||
|
.....#..#..#.##..##....#..#.#..
|
||||||
|
..#..#..##.#.#.##..#..#...#....
|
||||||
|
...#..........#.........#....##
|
||||||
|
.##.....###...............#.##.
|
||||||
|
...##...........#.#.#......#..#
|
||||||
|
.#...#.#.##....#....#..#.......
|
||||||
|
.#...###.#....#..#..#..#......#
|
||||||
|
#..#........###...........#..#.
|
||||||
|
..#...#......#.#.#......####.#.
|
||||||
|
...#.#....##.#.....#.....##....
|
||||||
|
...###..#.#.#...#.....#.###..#.
|
||||||
|
.#.#..#...##......#..........#.
|
||||||
|
##.....#.......#.#..###...#.#..
|
||||||
|
##.###....#.....#.....###.#....
|
||||||
|
#...#..##....#.#...#...#......#
|
||||||
|
.....##.#........#.###.........
|
||||||
|
.#..#..#.#......##.#...#.#.....
|
||||||
|
#..#.#........##...........##.#
|
||||||
|
#...###..#..####..#.#..........
|
||||||
|
..#...#....#...##.#....#....##.
|
||||||
|
......#.#........#.....#..#....
|
||||||
|
#.........#...#.....#...#..##..
|
||||||
|
#....#.........#...#.##..###.#.
|
||||||
|
#...###...#.##.#.#.............
|
||||||
|
#.#....#....#......#....#.#...#
|
||||||
|
##...#.##......#..#.#....#.....
|
||||||
|
....#...#.##....#..............
|
||||||
|
.........##..........#..##..#..
|
||||||
|
......##....#.#......#.........
|
||||||
|
..#.#..............#......#..##
|
||||||
|
...........##.......#.#.#......
|
||||||
|
##...#........##.......#.#.....
|
||||||
|
....#...#...#....#.#......##...
|
||||||
|
...#..#.#.#.........#..#.#....#
|
||||||
|
.##.#...#.#.........#.....##.#.
|
||||||
|
#.#.....#.#.....#..............
|
||||||
|
..#.#..#....#..........#..##...
|
||||||
|
...#..#....................#..#
|
||||||
|
...........#...........#...#..#
|
||||||
|
............#...#............##
|
||||||
|
..#....##......##...........#..
|
||||||
|
..#..#..#....#....##......##.##
|
||||||
|
##..........#..##.##.#...#.....
|
||||||
|
............#..#........###.#..
|
||||||
|
###...##.#.#....#....#.#....#..
|
||||||
|
...#......##...#.......####....
|
||||||
|
.......#..#..#.#.....#.........
|
||||||
|
........##.......##.....#......
|
||||||
|
#.#...#.###....#..#...##.......
|
||||||
|
...#.#....#..#####.#..##.#.....
|
||||||
|
..#.#..##.......###...#.....#..
|
||||||
|
..#.......#..#...#...#..#.##...
|
||||||
|
......#..#.......#.....#....#..
|
||||||
|
.......#........#.#.......##..#
|
||||||
|
.#.#.....#.......#.......##..#.
|
||||||
|
..#.#....#.#.#####.....#...#...
|
||||||
|
#..#............###.......#..#.
|
||||||
|
........##.........#..#...###..
|
||||||
|
.#............##...#.....#.....
|
||||||
|
.#..##..#....#....#.......#....
|
||||||
|
....##..........##.............
|
||||||
|
.##..........#..#..#....#...#..
|
||||||
|
...#..#..#............####.....
|
||||||
|
.............#..#.##..#.#.##...
|
||||||
|
.....#........#....#.#.......#.
|
||||||
|
###.#..#.#...#....##...........
|
||||||
|
....#......#...#....##.......#.
|
||||||
|
.......#.#...#.#...#........##.
|
||||||
|
..........#........#..#.##.....
|
||||||
|
##..#.#.....##.#...............
|
||||||
|
.....#....#................#...
|
||||||
|
...##....#........##.#....#....
|
||||||
|
.....##...###....#.#..#.......#
|
||||||
|
.....#.#.........##....###.....
|
||||||
|
.#.....##......#..##..##...##.#
|
||||||
|
.#..............#.....#.#......
|
||||||
|
.##......#..#..#......##.......
|
||||||
|
.......#..................#....
|
||||||
|
...#.#...##......####.........#
|
||||||
|
#....#####.#.#..#..#..#...#...#
|
||||||
|
##.#...#.......#....#...#...###
|
||||||
|
...#........#.....#...#.##.....
|
||||||
|
..##....#.......#....#.......##
|
||||||
|
#......#..##...#..##.#.....#.#.
|
||||||
|
..###........#.#..#........#.#.
|
||||||
|
...#.###..........#.....#.#.#..
|
||||||
|
#.###.....#...#...#..##..###...
|
||||||
|
#....#.#.....#.#........#......
|
||||||
|
........#.......##.......#.....
|
||||||
|
...........#...#......##.......
|
||||||
|
............#...#....#..#.....#
|
||||||
|
#.#.#.#....#.....#.#..........#
|
||||||
|
#.##...#...#..#....##.#.......#
|
||||||
|
...#..#......#..#...##..##..#..
|
||||||
|
#....#......#.#.....##.#..#....
|
||||||
|
#....#..##.#......#.#.....#..##
|
||||||
|
.#..##....##....#.#...#...#....
|
||||||
|
#.#.###....#.#............#...#
|
||||||
|
.#.#....#..#..........#....#.#.
|
||||||
|
......#..#.#...............##..
|
||||||
|
..#......###.#..........#.###..
|
||||||
|
....#.##.#..#...##..#.#...#....
|
||||||
|
..............#...##.......#.##
|
||||||
|
.#...........#....#....#.##....
|
||||||
|
#..#....#.....#...#.....##...#.
|
||||||
|
.........#...#.##.......#...#.#
|
||||||
|
.....#......#.........#.#..#...
|
||||||
|
##..........#.#..##...#.#.#....
|
||||||
|
##..##.#..#..#.....#.##....#...
|
||||||
|
........##....#.#.#....#......#
|
||||||
|
.#.##...#.###....#.........#..#
|
||||||
|
..........#....###..#.........#
|
||||||
|
#.#..#.#...#.......#..##.......
|
||||||
|
..#....#...###..............##.
|
||||||
|
#..###.....####...#..#..#...#..
|
||||||
|
......#..#...###........###....
|
||||||
|
..#.....#...#.......#....###..#
|
||||||
|
.#.........#.#.#....#.#.......#
|
||||||
|
#.#.###.#.#...........#........
|
||||||
|
......#..#.........#........#..
|
||||||
|
...........##.#........#.#...#.
|
||||||
|
.....#.#......##.......#.....##
|
||||||
|
...##...#............#..#.....#
|
||||||
|
.....#..##....##...##.#..#.#...
|
||||||
|
...#...#........#.#......##....
|
||||||
|
........#..##..#..#......##.#..
|
||||||
|
.#.#.....#.....#...........#.##
|
||||||
|
.#...#.#............#......#...
|
||||||
|
.....#...#........#....#..#.#..
|
||||||
|
...##....#..#...#..............
|
||||||
|
#....##.#.#............#.......
|
||||||
|
#..#..#.....##..#........##.#.#
|
||||||
|
##..#.#....#....##.......###..#
|
||||||
|
.#.#.#.....###.....#.#......###
|
||||||
|
.....#..#...###...#....#.#...#.
|
||||||
|
.##.....................##....#
|
||||||
|
.#.....#.........#....#.....##.
|
||||||
|
#...#....#.#...###.......#.#..#
|
||||||
|
...#.................#.#....#.#
|
||||||
|
.##...#.#......................
|
||||||
|
.##.#........#...##............
|
||||||
|
.#....#.....#.........#.##..##.
|
||||||
|
#......#...##..#.........##.##.
|
||||||
|
......#......#...####..#.##....
|
||||||
|
.###....#..##......#.##......#.
|
||||||
|
..#...#....#..#.......#.#......
|
||||||
|
#....#...#.................#.#.
|
||||||
|
....#.#.#..#...#..#.......#.#.#
|
||||||
|
#.#...##.......#.....##.#......
|
||||||
|
#.........#.....##..##..#......
|
||||||
|
....#..##..#.....#..#..#.#..#..
|
||||||
|
......#.#..#.#.#....#.#.......#
|
||||||
|
.##......#..#....##...##..#....
|
||||||
|
..#..#......#...##..#.##.....#.
|
||||||
|
..#..#.......#.#....#.....#...#
|
||||||
|
....#.#.....###...#.......#.#..
|
||||||
|
..#....##.....##.#........##...
|
||||||
|
#...............##....#.....##.
|
||||||
|
.#.........#....#...##.###.##.#
|
||||||
|
.#.##..#.............#.#.#..#..
|
||||||
|
.#.....#.................##....
|
||||||
|
..####.........#.#......#.#..#.
|
||||||
|
#.......#..........#.#........#
|
||||||
|
.#.#...##.....#.#.......#....#.
|
||||||
|
..#.##.#.......###....#....#...
|
||||||
|
.#....##.............##.#.#.#..
|
||||||
|
#.#.....#.#.#.#..#......##..#..
|
||||||
|
.............#..........#.#.#..
|
||||||
|
...#.#.............#.#...##....
|
||||||
|
.......#..#.#.......#..#.#....#
|
||||||
|
.............#.........###..#..
|
||||||
|
.#.#..#....#.....#..#.....#...#
|
||||||
|
#.....#....##..##.#..#........#
|
||||||
|
..##..###.....##....#.#..#.....
|
||||||
|
..#...##....#...#.#..........#.
|
||||||
|
...##..##.#.....#....#.........
|
||||||
|
..#...#........##.#..#........#
|
||||||
|
#.............#.###......#.##..
|
||||||
|
.#...#........#...........#...#
|
||||||
|
..##.......#.#..##.##......#...
|
||||||
|
...#.#...##....##..#...........
|
||||||
|
.#......##........#....##....#.
|
||||||
|
.........#..#....#...#..##.##..
|
||||||
|
....#..#.#...#.......#.#.##....
|
||||||
|
...#.#......#.#..#..#.#....#..#
|
||||||
|
.......#........#.........###..
|
||||||
|
#.#..#.#.........##............
|
||||||
|
##..##..#.##..###...#.#...#....
|
||||||
|
.#....#.#..#...#....#.##.....#.
|
||||||
|
.#.#.#.#........##...#..#.#.##.
|
||||||
|
.#..#.#..#...........#..#......
|
||||||
|
..#.##.#...#....#.........#...#
|
||||||
|
.....##...#.#...#...#....#.....
|
||||||
|
..#..........#.#.#.......##.#..
|
||||||
|
#.#............#..#.....#..#...
|
||||||
|
..#...........##.#.##.#....#..#
|
||||||
|
#..####.....#............#.....
|
||||||
|
.##......#####.#..#.....#....#.
|
||||||
|
...##..#.#......#.#..#..#...##.
|
||||||
|
#....................#.##...#.#
|
||||||
|
...#............#.............#
|
||||||
|
....#.##..........#.....#......
|
||||||
|
....##..##....#.#..............
|
||||||
|
...........#....##.#.....#.....
|
||||||
|
....#.....#....#....#......#...
|
||||||
|
#...##........#...#........#.#.
|
||||||
|
........#.....##..#.##.#..#.#.#
|
||||||
|
....##......##....#.....##....#
|
||||||
|
...#.#........##.......#...##..
|
||||||
|
#......##..#.#.#....##......#..
|
||||||
|
..#.......#.......##..#.##.....
|
||||||
|
.#...#...#.#.............##....
|
||||||
|
......#.#.#.........##...#..#.#
|
||||||
|
.....#..####....#.##..........#
|
||||||
|
...#...#.#....#.....#..#.....##
|
||||||
|
.........#.......#......###....
|
||||||
|
........##..##..#.#.#...###...#
|
||||||
|
.#..##.#....#...##.....#.#.#...
|
||||||
|
........##...#...##..#.........
|
||||||
|
.........#.......#.##..#...####
|
||||||
|
#......#.....#..............#.#
|
||||||
|
##..##.#.##.....##...........#.
|
||||||
|
#.............#.........#......
|
||||||
|
...####.#.##..#.#.#.##.#......#
|
||||||
|
..#.....##....#...#............
|
||||||
|
#..............#......#...###..
|
||||||
|
..#..#.#...#.##.........##.....
|
||||||
|
..#...##..#........#..#.##..##.
|
||||||
|
......###...#..#....#..#.###...
|
||||||
|
...##.##.###.....##.#.......#..
|
||||||
|
#....#..###..#.......#.#.#..#..
|
||||||
|
..##.............##..##...###.#
|
||||||
|
.#.#..#.........#..........#...
|
||||||
|
.........#.#.....##...#..#...##
|
||||||
|
....#..#....#####..#...#..#....
|
||||||
|
...#.....#.....#...#.#..#.#....
|
||||||
|
.#..#.............#.......##.#.
|
||||||
|
...##.......#.#.....##......#..
|
||||||
|
...........##..#.##..###...#.#.
|
||||||
|
...........#...........#...#..#
|
||||||
|
..#....#.##.#..#..#...........#
|
||||||
|
..#.....##...#......#...#......
|
||||||
|
...###.###.....##..........#..#
|
Loading…
Reference in New Issue
Block a user