Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }