feat: solve day 5 part 1

This commit is contained in:
Stevan Freeborn
2024-12-05 23:10:08 -06:00
parent d8f67e85ca
commit a9f9dec7aa
9 changed files with 292 additions and 6 deletions
+47
View File
@@ -0,0 +1,47 @@
namespace PrintQueue;
class UpdateValidator
{
public readonly Dictionary<int, HashSet<int>> Graph = [];
public UpdateValidator(List<OrderRule> rules)
{
foreach (var rule in rules)
{
if (Graph.ContainsKey(rule.X) is false)
{
Graph.Add(rule.X, []);
}
if (Graph.ContainsKey(rule.Y) is false)
{
Graph.Add(rule.Y, []);
}
Graph[rule.X].Add(rule.Y);
}
}
public bool Validate(Update update)
{
var previousPages = new List<int>();
foreach (var page in update.Pages)
{
foreach (var previousPage in previousPages)
{
if (
Graph.TryGetValue(previousPage, out HashSet<int>? value) &&
value.Contains(page) is false
)
{
return false;
}
}
previousPages.Add(page);
}
return true;
}
}