45 lines
1.5 KiB
C#
45 lines
1.5 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.IO;
|
|
|
|
namespace AOC2017
|
|
{
|
|
class BScottDay4 : BScottSolution
|
|
{
|
|
public override string Name => "Day 4: High-Entropy Passphrases";
|
|
|
|
public override void Run()
|
|
{
|
|
string[] input = File.ReadAllLines("BScottDay4.txt");
|
|
Console.WriteLine($"Part 1 Answer: {GetValidPassPhrasesPart1(input)}");
|
|
Console.WriteLine($"Part 2 Answer: {GetValidPassPhrasesPart2(input)}");
|
|
}
|
|
|
|
static int GetValidPassPhrasesPart1(string[] input)
|
|
{
|
|
int count = 0;
|
|
for (int i = 0; i < input.Length; i++)
|
|
{
|
|
string[] passStrings = input[i].Split(new char[] {' '});
|
|
string[] distinctStrings = passStrings.Distinct().ToArray();
|
|
if (passStrings.Length == distinctStrings.Length)
|
|
count++;
|
|
}
|
|
return count;
|
|
}
|
|
|
|
static int GetValidPassPhrasesPart2(string[] input)
|
|
{
|
|
int count = 0;
|
|
for (int i = 0; i < input.Length; i++)
|
|
{
|
|
string[] passStrings = Array.ConvertAll(input[i].Split(new char[] { ' ' }), s => string.Concat(s.OrderBy(c => c)));
|
|
string[] distinctStrings = passStrings.Distinct().ToArray();
|
|
if (passStrings.Length == distinctStrings.Length)
|
|
count++;
|
|
}
|
|
return count;
|
|
}
|
|
}
|
|
}
|