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 Day02 {
static bool IsPasswordValid1(string spec) { string[] tokens = spec.Split(' '); string[] numbers = tokens[0].Split('-'); int min = int.Parse(numbers[0]); int max = int.Parse(numbers[1]); char required = tokens[1][0]; string password = tokens[2];
int count = 0; for (int i = 0; i < password.Length; i++) { if (password[i] == required) { count++; } } return min <= count && count <= max; }
static bool IsPasswordValid2(string spec) { string[] tokens = spec.Split(' '); string[] numbers = tokens[0].Split('-'); int lowIndex = int.Parse(numbers[0]) - 1; int highIndex = int.Parse(numbers[1]) - 1; char required = tokens[1][0]; string password = tokens[2]; return (password[lowIndex] == required && password[highIndex] != required) || (password[lowIndex] != required && password[highIndex] == required); }
static int Part1() { return File.ReadAllLines(Util.RootDir + "day02.txt").Count(IsPasswordValid1); }
static int Part2() { return File.ReadAllLines(Util.RootDir + "day02.txt").Count(IsPasswordValid2); }
[Fact] public static void Test() { Assert.True(IsPasswordValid1("1-3 a: abcde")); Assert.False(IsPasswordValid1("1-3 b: cdefg")); Assert.True(IsPasswordValid1("2-9 c: ccccccccc")); Assert.Equal(603, Part1());
Assert.True(IsPasswordValid2("1-3 a: abcde")); Assert.False(IsPasswordValid2("1-3 b: cdefg")); Assert.False(IsPasswordValid2("2-9 c: ccccccccc")); Assert.Equal(404, Part2()); } } }
|