Меню


Site Logo

Тестовое задание для ведущего разработчика С++

Уровень: базовый, решение открывает доступ к выполнению задания уровня 2
Индекс сложности: 1

Постановка задачи

Есть последовательность идентификаторов, строящаяся по следующим правилам:

  1. Первый идентификатор последовательности имеет вид «A1», второй — «A2», третий - «A3» и так далее. За «A9» следует «B1». Следующий после «Z9» имеет вид «A1-A1», потом «A1-A2» и так далее. После «A1-Z9» следует «A2-A1».
  2. Максимальная длина идентификатора - десять групп по два символа.
  3. В идентификаторах никогда не должны присутствовать буквы «D», «F», «G», «J», «M», «Q», «V» и цифра «0».

Нужно на C++ написать библиотечный класс, предназначенный для использования другими программистами, обеспечивающий функцию генерации идентификаторов по этим правилам.

Требование к тестовому заданию:

  • Код должен быть пригоден для включения в состав программного продукта - т.е. компилироваться. В случае ошибок компиляции задание считается невыполненным, анализ, что там внутри написано проводиться не будет.
  • Трудозатраты для интеграции класса в сторонний код должны быть минимальными.
  • Текущий идентификатор для генерации следующего поступает со стороны вызывающего кода:

    Класс в обязательном порядке должен обладать интерфейсом, содержащим функцию:

    /// <Summary>
    /// Функция генерирует новый идентификатор на основе значения переданного идентификатора
    /// </Summary>
    /// <param name="identifier">Идентификатор последовательности</param>
    /// <returns>
    /// Следующий идентификатор
    /// </returns>
    std::string GenerateNextIdentifier(const std::string &identifier); 
    

    Функция получает в качестве входного параметра строку с идентификатором из описанной последовательности и генерирует на выходе строку, содержащую следующий идентификатор последовательности. Например, функция получает «A1-Z9» и возвращает «A2-A1».

  • Код должен без проблем собираться с помощью Microsoft Visual C++ 18.00 и старше, GCC 4.3 и старше.
  • Для решения задачи разрешается использовать только стандартную библиотеку С++.

attention

Пожалуйста, обратите внимание на то, что нас интересует не только правильность реализации алгоритма, но и общее качество кода. Код должен быть легко понимаем сторонним разработчиком, должен быть удобен в поддержке. Пренебрежение этим требованием обязательно приведет к тому, что задание не будет рассмотрено.

Пожалуйста, присылайте выполненное задание либо вложенным файлом, либо в теле письма. Тестовое задание, присланное в виде ссылки, рассматриваться не будет.

Выполненное тестовое задание присылайте на электронный адрес: n.prosalkova@uniteller.ru

attention

Учтите, что в Интернете легко найти множество примеров кода, решающего эту задачу. Вам, однако, придётся решить – действительно ли код «из Интернета» является подходящим образцом кода, пригодного для включения в состав программного продукта. Для большинства «гуглящихся» решений это абсолютно не так.