public MarkovNameGenerator(IEnumerable<string> samples, int order)
{
m_order = order;
m_samples = samples.ToList<string>();
foreach (string sample in samples)
{
if (m_minLength > sample.Length)
m_minLength = sample.Length;
if (m_maxLength < sample.Length)
m_maxLength = sample.Length;
for (int index = 0; index < sample.Length - order; index++)
{
string token = sample.Substring(index, order);
List<string> entry = null;
if(!m_chains.ContainsKey(token))
{
entry = new List<string>();
m_chains.Add(token, entry);
}
else
{
entry = m_chains[token];
}
entry.Add(sample[index + order].ToString());
}
}
}