public void Start() { _view.DrawTitle(); var infoBits = ProcessInput(); var controlBitsCount = _model.GetControlBitsCount(infoBits.Length); _view.ShowControlBitCount(controlBitsCount); var controlBitsIndexes = _model.GetControlBitsIndexes(controlBitsCount); var temporaryBitArray = new byte[infoBits.Length + controlBitsCount]; _model.InsertInfoBits(infoBits, controlBitsIndexes, ref temporaryBitArray); _view.ShowTemporaryArray(temporaryBitArray, controlBitsIndexes); var controlBits = _model.CalculateControlBits(temporaryBitArray, controlBitsCount, controlBitsIndexes); _model.InsertControlBits(controlBits.Item1, controlBitsIndexes, ref temporaryBitArray); _view.ShowControlBitsCalculation(controlBits.Item1, controlBits.Item2, temporaryBitArray); _view.ShowEncodedArray(temporaryBitArray, controlBitsIndexes); var mistakeIndex = ProcessMistakeInput(temporaryBitArray.Length); _model.MakeMistake(ref temporaryBitArray, mistakeIndex); _view.ShowArrayWithMistake(temporaryBitArray, mistakeIndex); controlBits = _model.CalculateControlBits(temporaryBitArray, controlBitsCount, controlBitsIndexes); _view.ShowCheckSumCalculation(controlBits.Item1, controlBits.Item2, temporaryBitArray); var mistakeNumber = Utils.BitArrayToInt(controlBits.Item1.Reverse().ToArray()); _view.ShowMistakeNumber(mistakeNumber); _model.MakeMistake(ref temporaryBitArray, mistakeNumber - 1); _view.ShowMistakeFix(temporaryBitArray, mistakeIndex); }