fix: invert logic

This commit is contained in:
Stevan Freeborn
2024-12-06 00:23:04 -06:00
parent e4a89a4f73
commit 3cd6162f44
+11 -9
View File
@@ -21,28 +21,30 @@ class UpdateValidator
Graph[rule.X].Add(rule.Y); Graph[rule.X].Add(rule.Y);
} }
} }
// NOTE: This is basically a bubble sort
//
public Update Sort(Update update) public Update Sort(Update update)
{ {
var sortedUpdate = new Update(update.Pages.ToList()); var sortedUpdate = new Update(update.Pages.ToList());
while (Validate(sortedUpdate) is false) while (Validate(sortedUpdate) is false)
{ {
for (var i = 0; i < sortedUpdate.Pages.Count - 1; i++) for (var i = 0; i < sortedUpdate.Pages.Count - 1; i++)
{ {
var currentPage = sortedUpdate.Pages[i]; var currentPage = sortedUpdate.Pages[i];
var nextPage = sortedUpdate.Pages[i + 1]; var nextPage = sortedUpdate.Pages[i + 1];
if (IsOutOfOrder(currentPage, nextPage) is false) if (IsInOrder(currentPage, nextPage))
{ {
continue; continue;
} }
sortedUpdate.Pages[i] = nextPage; sortedUpdate.Pages[i] = nextPage;
sortedUpdate.Pages[i + 1] = currentPage; sortedUpdate.Pages[i + 1] = currentPage;
} }
} }
return sortedUpdate; return sortedUpdate;
} }
@@ -52,7 +54,7 @@ class UpdateValidator
foreach (var page in update.Pages) foreach (var page in update.Pages)
{ {
if (previousPages.Any(previousPage => IsOutOfOrder(previousPage, page))) if (previousPages.Any(previousPage => IsInOrder(previousPage, page) is false))
{ {
return false; return false;
} }
@@ -63,9 +65,9 @@ class UpdateValidator
return true; return true;
} }
private bool IsOutOfOrder(int previousPage, int futurePage) private bool IsInOrder(int previousPage, int futurePage)
{ {
return Graph.TryGetValue(previousPage, out var dependents) && return Graph.TryGetValue(previousPage, out var dependents) &&
dependents.Contains(futurePage) is false; dependents.Contains(futurePage);
} }
} }