Google Code Jam 2012. Задание А квалификационного раунда


Исходный текст задания: Problem A. Speaking in Tongues.

Задача

Google представляет гугловский язык, лучший из возможных языков. Чтобы перевести текст на гугловский язык, мы заменяем каждую английскую букву другой английской буквой. Это преобразование «один к одному«, то есть одна и та же входная буква всегда заменяется одной и той же выходной буквой, а другие входные буквы всегда заменяются другими выходными буквами. Буква может заменяться самой собой. Пробелы остаются без изменения.

Например, наш алгоритм включает три следующих преобразования: ‘a’ -> ‘y’, ‘o’ -> ‘e’, and ‘z’ -> ‘q’.  Фраза «a zoo» превратится в «y qee».

Гугловский язык базируется на лучшем возможном алгоритме преобразования, и мы не станем вносить в него изменения. Алгоритм всегда будет одним и тем же. В каждом тесте. Мы не расскажем о преобразовании остальных букв, иначе получится слишком лёгкая задача, но дадим несколько примеров, которые могут помочь вам.

Вы сможете перевести текст с гугловского языка на обычный язык?

Входные данные

Первая строка содержит количество тестов, T. Далее находятся T строк с тестовыми данными.

Тестовые данные представляют собой строку G на гугловском языке, которая состоит из одного или нескольких слов, содержащих буквы  ‘a’ — ‘z’. Соседние слова разделены одним пробелом (‘ ‘); начало и конец строки не содержат пробелов.

Выходные данные

Для каждого теста должна быть одна строка вида «Case #X: S«, где X – номер теста, S строка, перевод которой на гугловский язык даёт строку G.

 Ограничения

1 ≤ T ≤ 30.
G содержит не более 100 символов.
Текст не обязательно составлен правильным английским языком.

Пример

Входные данные

3
ejp mysljylc kd kxveddknmc re jsicpdrysi
rbcpc ypc rtcsra dkh wyfrepkym veddknkmkrkcd
de kr kd eoya kw aej tysr re ujdr lkgc jv

Выходные данные

Case #1: our language is impossible to understand
Case #2: there are twenty six factorial possibilities
Case #3: so it is okay if you want to just give up

Моё решение на C#

using System;
using System.Text;

class languages
{
  static void Main(string[] args)
  {
    string G;
    string S;
    int j;
    int index;
    StringBuilder sb;

    string English = "abcdefghijklmnopqrstuvwxyz";
    string Googler = "ynficwlbkuomxsevzpdrjgthaq";

    int CaseNum = Convert.ToInt32(Console.ReadLine());
    for (int i = 1; i <= CaseNum; i++)
    {
      G = Console.ReadLine();
      sb = new StringBuilder(G.Length);
      for (j = 0; j < G.Length; j++)
      {
        if (G[j] == ' ')
        {
          sb.Append(G[j]);
        }
        else
        {
          index = Googler.IndexOf(G[j]);
          sb.Append(English[index]);
        }
      }
      S = sb.ToString();
      Console.WriteLine("Case #{0}: {1}", i, S);
    }
  }
}
Реклама
Запись опубликована в рубрике перевод, программирование с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s