Colin McMillen
3 years ago
2 changed files with 2331 additions and 0 deletions
-
922020/Day06.cs
-
22392020/day06.txt
@ -0,0 +1,92 @@ |
|||
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()); |
|||
} |
|||
} |
|||
} |
2239
2020/day06.txt
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Write
Preview
Loading…
Cancel
Save
Reference in new issue