namespace TuringMachine.Core { public enum MoveDirection { Left, Right, Stay } public record TransitionKey(string State, char ReadSymbol); public record TransitionResult(string NewState, char WriteSymbol, MoveDirection MoveDirection, string Comment = ""); public class TransitionTable { private readonly Dictionary _transitions = new(); public void Add(string state, char readSymbol, string newState, char writeSymbol, MoveDirection moveDirection, string comment = "") { _transitions[new TransitionKey(state, readSymbol)] = new TransitionResult(newState, writeSymbol, moveDirection, comment); } public bool TryGetTransition(string state, char readSymbol, out TransitionResult? result) { return _transitions.TryGetValue(new TransitionKey(state, readSymbol), out result); } public IEnumerable> Items => _transitions; public void Clear() => _transitions.Clear(); } }