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 Day06 {
static int CountAnswers1(string[] input) { int total = 0; var groupAnswers = new HashSet<char>(); foreach (string line in input) { if (line == "") { total += groupAnswers.Count(); groupAnswers.Clear(); continue; } foreach (char c in line) { groupAnswers.Add(c); } } total += groupAnswers.Count(); return total; }
static int CountAnswers2(string[] input) { int total = 0; var groupAnswers = new HashSet<char>(); int groupSize = 0; foreach (string line in input) { if (line == "") { total += groupAnswers.Count(); groupAnswers.Clear(); groupSize = 0; continue; } groupSize++; if (groupSize == 1) { foreach (char c in line) { groupAnswers.Add(c); } } else { foreach (char c in groupAnswers) { if (!line.Contains(c)) { groupAnswers.Remove(c); } } } } total += groupAnswers.Count(); return total; }
static int Part1() { string[] input = File.ReadAllLines(Util.RootDir + "day06.txt"); return CountAnswers1(input); }
static int Part2() { string[] input = File.ReadAllLines(Util.RootDir + "day06.txt"); return CountAnswers2(input); }
[Fact] public static void Test() { string[] example = @"abc
a b c
ab ac
a a a a
b".Split('\n');
Assert.Equal(11, CountAnswers1(example)); Assert.Equal(6, CountAnswers2(example));
Assert.Equal(6947, Part1()); Assert.Equal(3398, Part2()); } } }
|