More minor optimizations

This commit is contained in:
Asriel Camora
2023-06-21 06:16:57 -07:00
parent fc0ffc11f3
commit 0b2b80d6b5
10 changed files with 76 additions and 64 deletions
+13 -6
View File
@@ -4,25 +4,32 @@ namespace Craftimizer.Solver.Crafty;
public class Arena<T> where T : struct
{
public readonly record struct Node
public readonly struct Node
{
public T State { get; init; }
public List<int> Children { get; init; }
public int Parent { get; init; }
public readonly T State;
public readonly List<int> Children;
public readonly int Parent;
public Node(T state, int parent)
{
State = state;
Children = new();
Parent = parent;
}
}
private readonly List<Node> nodes = new();
public Arena(T initialState = default)
{
nodes.Add(new() { Parent = -1, Children = new(), State = initialState });
nodes.Add(new(initialState, -1));
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public int Insert(int parentIndex, T state)
{
var index = nodes.Count;
nodes.Add(new() { Parent = parentIndex, Children = new(), State = state });
nodes.Add(new(state, parentIndex));
nodes[parentIndex].Children.Add(index);
return index;
}