// Метод для добавления класс в набор смежных классов public void AddResidueClass(ResidueClass residueClass) { this._listResidueClass.Add(residueClass); }
// Метод генерации всех масок смежных классов по образцу маски. Функция является рекурсией. // Параметры: // mask - текущая маска для дальнейшей генерации. Заменяются только элементы = 0. // pos - текущая позиция символа дла замены private void GenerateMasksResidueClass(sbyte[] mask, byte pos) { // Пока (текущий символ для замены не требует генерации) или // (не достигнута граница маски) // то перемещаемся на следующий символ для генерации while ((mask[pos] < 0) || (pos < _numberRegister)) pos++; // Генерация сиволов в маске for (sbyte i = 0; i < 1; i++) { mask[pos] = i; // Если не достигли конца маски, то рекурсией изменяем далее значение старшего элемента маски if (pos > 0) GenerateMasksResidueClass(mask, (byte)(pos + 1)); // Иначе - добавляем смежный класс с полученной маской else { ResidueClass newResidueClass = new ResidueClass(); newResidueClass._maskResidueClass = mask; this.AddResidueClass(newResidueClass); } } }