public void Learn(List <IState> states) { int numStates = states.Count; int maxGramState = numStates - 1 - n; for (int iState = 0; iState < maxGramState; iState++) { Gram gramStates = new Gram(n, states.GetRange(iState, n)); if (grams.ContainsKey(gramStates.uid) == false) { grams.Add(gramStates.uid, gramStates); } if (iState < maxGramState - n) { gramStates.AddLink(new Gram(n, states.GetRange(iState + n, n))); } } }