You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
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()); } } }
|