var pattern = _patterns[_randomGenerator.Next(0, _patterns.Count)];
var name = "";
var currentRule = "";
for (int i = 0; i < pattern.Length; i += _stepSize)
{
var expectedPattern = "";
if (i + _stepSize > pattern.Length)
expectedPattern = pattern.Substring(i, pattern.Length - i);
else
expectedPattern = pattern.Substring(i, _stepSize);
if (i == 0)
{
var rulesWithCorrectPattern = DetermineRulesWithCorrectPattern(expectedPattern, _rules);
if (rulesWithCorrectPattern.Count != 0)
currentRule = rulesWithCorrectPattern[_randomGenerator.Next(0, rulesWithCorrectPattern.Count)];
currentRule = "";
}
else
{
var rulesWithCorrectPattern = DetermineRulesWithCorrectPattern(expectedPattern, _rules[currentRule]);
if (rulesWithCorrectPattern.Count != 0)
currentRule = rulesWithCorrectPattern[_randomGenerator.Next(0, rulesWithCorrectPattern.Count)];
currentRule = "";
}
if (currentRule == string.Empty)
break;
name += currentRule;
}