public void IndexMinHeap_RemoveFirst(IntHeapItem[] items) { //Create the heap and add the items. var heap = new IndexMinHeap <IntHeapItem>(items); for (var i = 0; i < items.Length; i++) { heap.Add(i); } //Check if the items are in the correct order. var previousValue = int.MinValue; for (var i = 0; i < items.Length; i++) { var value = items[heap.RemoveFirst()].Value; if (value >= previousValue) { previousValue = value; } else { Assert.Fail($"Value {value} is smaller than previous value {previousValue}"); } } }
public bool Step(int stepsToRun = 1) { while (_openSet.Count > 0 && stepsToRun != 0) { if (stepsToRun > 0) { stepsToRun--; } var currentNodeIndex = _openSet.RemoveFirst(); if (currentNodeIndex == TargetNodeIndex) { return(true); } ref var currentNode = ref _pathfindingNetwork[currentNodeIndex]; ref var currentDefinitionNode = ref _definitionNodes[currentNodeIndex];
public bool FindPath(AstarNode[] pathfindingNetwork, DefinitionNode[] definitionNodes, int targetNodeIndex, float neededClearance, PathfindaxCollisionCategory collisionCategory, int stepsToRun = -1) { while (_openSet.Count > 0 && stepsToRun != 0) { if (stepsToRun > 0) { stepsToRun--; } var currentNodeIndex = _openSet.RemoveFirst(); if (currentNodeIndex == targetNodeIndex) { return(true); } ref var currentNode = ref pathfindingNetwork[currentNodeIndex]; ref var currentDefinitionNode = ref definitionNodes[currentNodeIndex];
public void IndexMinHeap_RemoveFirst_LIFO() { var items = new[] { new IntHeapItem(1), new IntHeapItem(1), new IntHeapItem(1) }; //Create the heap and add the items. var heap = new IndexMinHeap <IntHeapItem>(items); for (var i = 0; i < items.Length; i++) { heap.Add(i); } //Check if the elements are returned in LIFO order for (var i = items.Length - 1; i >= 0; i--) { var index = heap.RemoveFirst(); Assert.IsTrue(index == i); } }
public void IndexMinHeap_Contains_AddAndRemoveAll(IntHeapItem[] items) { //Create the heap and add the items except the last one. var heap = new IndexMinHeap <IntHeapItem>(items); for (var i = 0; i < items.Length; i++) { heap.Add(i); } while (heap.Count > 0) { heap.RemoveFirst(); } for (var i = 0; i < items.Length; i++) { Assert.IsFalse(heap.Contains(i), $"Contains returned true for index {i}"); } }
public IntHeapItem RemoveFirst() { return(_values[_removeFirstMinHeap.RemoveFirst()]); }