Add various uncommitted 2021 files for posterity

This commit is contained in:
Josh Creek
2022-10-12 18:28:43 +01:00
parent 3b3a25b9cd
commit fd8b8c7ef1
16 changed files with 848 additions and 18 deletions
+67 -3
View File
@@ -8,13 +8,77 @@ namespace Day14
{
static void Main(string[] args)
{
string[] lines = File.ReadAllLines("input.txt");
var sr = new StreamReader("input.txt");
var translate = new Dictionary<string, string>();
string polymer = sr.ReadLine();
//Part1(lines);
Part2(lines);
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
if (line.Length > 0)
{
var p = line.Split(" -> ");
translate.Add(p[0], p[1]);
}
}
var pairs = new Dictionary<string, ulong>();
var elements = new Dictionary<string, ulong>();
for (int k = 0; k < polymer.Length - 1; k++)
{
var p = polymer.Substring(k, 2);
pairs.TryAdd(p, 0);
pairs[p]++;
}
for (int k = 0; k < polymer.Length; k++)
{
elements.TryAdd(polymer[k].ToString(), 0);
elements[polymer[k].ToString()]++;
}
for (int i = 0; i < 40; i++)
{
var newpairs = new Dictionary<string, ulong>();
foreach (var p in pairs.Keys)
{
var insert = translate[p];
var c = pairs[p];
newpairs.TryAdd(p[0] + insert, 0);
newpairs[p[0] + insert] += c;
newpairs.TryAdd(insert + p[1], 0);
newpairs[insert + p[1]] += c;
elements.TryAdd(insert, 0);
elements[insert] += c;
}
pairs = newpairs;
}
ulong min = ulong.MaxValue;
ulong max = ulong.MinValue;
ulong sum = 0;
foreach (var a in elements.Values)
{
if (a > max) max = a;
if (a < min) min = a;
sum += a;
}
Console.WriteLine($"Result: {max} - {min} = {max - min}, length = {sum}");
}
//static void Main(string[] args)
//{
// string[] lines = File.ReadAllLines("input.txt");
// //Part1(lines);
// Part2(lines);
//}
static void Part1(string[] lines)
{
string polymerTemplate = lines[0];