/// <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()); }
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; }