Не верное распределение группы символов в коде Фано
При каких-то словосочетаниях код формируется правильно, а при других не правильно.
Никак не могу понять в чём ошибка.
Не правильное составление кода - 
Функции, которые отвечают за разбиение кода -
static List<Symbol> CalculateSymbolsCodes(List<Symbol> symbols) //Рассчитывает код символов
{
var cPoint = GetSeparationIndex(symbols) + 1;
var topList = symbols.GetRange(0, cPoint);
var bottomList = symbols.GetRange(cPoint, symbols.Count - cPoint);
topList.ForEach(s => s.Code += "0");
if (topList.Count > 1) CalculateSymbolsCodes(topList);
bottomList.ForEach(s => s.Code += "1");
if (bottomList.Count > 1) CalculateSymbolsCodes(bottomList);
topList.AddRange(bottomList);
return topList;
}
static int GetSeparationIndex(List<Symbol> symbols) // рассчиывает индекс разделения символа
{
var dict = new SortedList<double, int>();
var half = symbols.Sum(s => s.Probability) / 2;
var sum = 0.0;
for (var i = 0; i < symbols.Count; i++)
{
sum += symbols[i].Probability;
var diff = Math.Abs(half - sum);
if (!dict.ContainsKey(diff)) dict.Add(diff, i);
}
return dict.First().Value;
}
