public string Decode(WordAndKey <int[, ]> element) { var numberLitera = Converter.ConvertWordToCode(element.Word);//TODO: может стоит объединить это в отдельный статический класс? var keyLitera = new LimitedSizeStack <int>(element.Key.GetLength(1)); for (var i = 0; i < element.Key.GetLength(1); i++) { keyLitera.Push(element.Key[1, i]); } foreach (var nL in numberLitera) { element.Encoded = Convert.ToString(FindValue.Findvalue((nL - keyLitera.PopFirst()) % Languege.z)); if (keyLitera.Count == 0) { Generate.sequence(element.Key, keyLitera); } } return(element.Encoded); }
public string Code(WordAndKey <int[, ]> element)//TODO: понять, как реализовать в других системах исчисления { var numberLitera = Converter.ConvertWordToCode(element.Word); var keyLitera = new LimitedSizeStack <int>(element.Key.GetLength(1)); for (var i = 0; i < element.Key.GetLength(1); i++) { keyLitera.Push(element.Key[1, i]); } foreach (var nL in numberLitera) { element.Encoded = Convert.ToString(FindValue.Findvalue((nL + keyLitera.PopFirst()) % Languege.z)); if (keyLitera.Count == 0) { Generate.sequence(element.Key, keyLitera); } } return(element.Encoded); }
public static List <int> PseudorandomSequence(int[,] basisOfSequence) { var result = new List <int>(); var generator = new LimitedSizeStack <int>(basisOfSequence.GetLength(1)); for (var i = 0; i < basisOfSequence.GetLength(1); i++) { generator.Push(basisOfSequence[1, i]); } for (var i = 0; i < 100; i++) { result.Add(generator.PopFirst() % Languege.z); if (checkRepetition(result, basisOfSequence, i)) { result.RemoveRange(result.Count - basisOfSequence.GetLength(1), basisOfSequence.GetLength(1)); return(result); } if (generator.Count == 0) { sequence(basisOfSequence, generator); } } return(result); }