/// <summary> /// Кодирует полученное сообщение. /// </summary> /// <param name="ourMessage">Кодируемое слово</param> /// <returns>Код</returns> public int[] Encode(int[] ourMessage) { BaseMatrix A = new BaseMatrix(ourMessage); BaseMatrix C = MyStatics.Multiplication(A, generatingMatrix);; return(C.Matrix[0]); }
/// <summary> /// Создает код на основе полученной матрицы, устонавливая его основные параметры. /// </summary> /// <param name="generatingMatrix">Порождающая матрица</param> /// <param name="line">Система уравнений, порождающая код</param> public Code(SolutionsMatrix generatingMatrix, string[] line) { if (generatingMatrix.Matrix.Count < generatingMatrix.Matrix[0].Length) { throw new CodeGeneratingException("Система имеет недостаточно решений для генерации кода."); } this.generatingMatrix = generatingMatrix; systemOfEquations = line; allCodeWords = new BaseMatrix(); for (int possibleCodeNumber = 0; possibleCodeNumber < Math.Pow(2, K); possibleCodeNumber++) { int[] intArrayPossibleCodeNumber = MyStatics.ToBinaryIntArray(possibleCodeNumber, K); BaseMatrix vectorPossibleCodeNumber = new BaseMatrix(); for (int i = 0; i < K; i++) { int[] nextLine = { intArrayPossibleCodeNumber[i] }; vectorPossibleCodeNumber.Matrix.Add(nextLine); } BaseMatrix vectorPossibleCode = MyStatics.Multiplication(vectorPossibleCodeNumber, generatingMatrix); allCodeWords.Matrix.Add(vectorPossibleCode.Matrix[0]); } this.t = (MyStatics.FindMinDistance(AllCodeWords) - 1) / 2; }