public SimpleWordStateMachineClient(string[] words) { initialState = new SimpleWordStateMachineState(null); currentState = initialState; foreach (var word in words) { foreach (var letter in word) { if (currentState.letterStateDictionary.ContainsKey(letter)) { currentState = currentState.letterStateDictionary[letter]; } else { var newState = new SimpleWordStateMachineState(currentState); currentState.letterStateDictionary.Add(letter, newState); currentState = newState; } } currentState.IsWordEnd = true; currentState = initialState; } }
public void NavigateForward(char letter) { currentState = currentState.letterStateDictionary[letter]; }
public void Reset() { currentState = initialState; }
public void NavigateBack() { currentState = currentState.previousState; }