/// <summary>
        /// Поиск решения.
        /// </summary>
        /// <returns>
        /// Формат ответа клиента.
        /// </returns>
        public AnswerFormat FindSolution()
        {
            TaskFormat workTask = this.currentTask;

            Word workWord = new Word();

            workWord.SetWord(this.currentTask.StartWord);

            AnswerFormat answer = new AnswerFormat();

            while (workTask.NumberOfWordsThatNeedToBeIterated > 0)
            {
                foreach (string convolution in workTask.Convolutions)
                {
                    if (Cryptography.Encryption(workWord.ToString()) == convolution)
                    {
                        ConvolutionSolution convolutionSolution = new ConvolutionSolution(
                            workWord.ToString(), convolution);
                        answer.AddSolution(convolutionSolution);
                        answer.Task = this.currentTask;
                        Console.WriteLine("Найдено решение:" + convolutionSolution);
                    }
                }

                workWord.GoToNextWord();
                workTask.NumberOfWordsThatNeedToBeIterated--;
            }

            return(answer);
        }
        public void ConvolutionCreateTests()
        {
            ConvolutionSolution convolution = new ConvolutionSolution("312", "123");

            Assert.AreEqual("312", convolution.Word);
            Assert.AreEqual("123", convolution.Convolution);
            Assert.AreEqual("312 - 123", convolution.ToString());
        }
Exemplo n.º 3
0
        public void AddingSolutionTest()
        {
            AnswerFormat        answer   = new AnswerFormat();
            ConvolutionSolution solution = new ConvolutionSolution("123", "321");

            Assert.AreEqual(0, answer.Solution.Length);
            answer.AddSolution(solution);
            Assert.AreEqual(1, answer.Solution.Length);
            solution = new ConvolutionSolution("1231", "3211");
            answer.AddSolution(solution);
            Assert.AreEqual(2, answer.Solution.Length);
        }
        /// <summary>
        /// Метод для добавления найденого решения.
        /// </summary>
        /// <param name="newConvolutionSolution">
        /// Найденное решение.
        /// </param>
        public void AddSolution(ConvolutionSolution newConvolutionSolution)
        {
            ConvolutionSolution[] convolutionSolutionTemp = new ConvolutionSolution[this.Solution.Length + 1];

            int i = 0;

            foreach (ConvolutionSolution solution in this.Solution)
            {
                convolutionSolutionTemp[i] = solution;
                i++;
            }

            convolutionSolutionTemp[i] = newConvolutionSolution;
            this.Solution = convolutionSolutionTemp;
        }