/// <summary>
 /// Сгенерировать ответы.
 /// </summary>
 /// <param name="input">Входной поток с вопросами.</param>
 /// <param name="output">Выходной поток для ответов.</param>
 /// <param name="answersGenerator">Генератор ответов.</param>
 private static void GenerateAnswers(TextReader input, TextWriter output, IWordCompletionsGenerator answersGenerator)
 {
     int questionsCount = int.Parse(input.ReadLine(), CultureInfo.CurrentCulture);
     for (int i = 0; i < questionsCount; i++)
     {
         string question = input.ReadLine();
         foreach (IWordCompletion completion in answersGenerator.GetTenBestCompletions(question))
             output.WriteLine(completion.Word);
         if (i != questionsCount - 1)
             output.WriteLine();
         if (i % 1000 == 0)
             Logger.WriteVerbose(string.Format(CultureInfo.CurrentCulture, Resources.AnsweredQuestionsNumber, i));
     }
     Logger.WriteVerbose(string.Format(CultureInfo.CurrentCulture, Resources.AllQuestionsAnswered));
 }
 /// <summary>
 /// Создать экземпляр класса клиента.
 /// </summary>
 /// <param name="clientSocket">Сокет для обмена командами с клиентом.</param>
 /// <param name="wordCompletionsGenerator">Генератор автодополнений слов.</param>
 public Client(Socket clientSocket, IWordCompletionsGenerator wordCompletionsGenerator)
 {
     this.clientSocket = clientSocket;
     this.wordCompletionsGenerator = wordCompletionsGenerator;
     BeginReceive();
 }
 /// <summary>
 /// Создать экземпляр класса сервера.
 /// </summary>
 /// <param name="wordCompletionsGenerator">Генератор вариантов автодополнения слов.</param>
 /// <param name="portNumber">Номер порта для сервера.</param>
 public Server(IWordCompletionsGenerator wordCompletionsGenerator, int portNumber)
 {
     this.wordCompletionsGenerator = wordCompletionsGenerator;
     this.portNumber = portNumber;
 }