Спасибо
Присоединяйся
к команде
разработчиков
московской биржи
Знаешь C++, Java, Python? Стремишься к новым
знаниям и планируешь карьеру в ИТ? У нас
10 вакансий для студентов старших курсов
технических вузов.
Подробнее
Что мы предлагаем?
Оплачиваемую стажировку сроком
от 6 месяцев с гибким графиком, персональным наставником и участием в реальных проектах по разработке и развитию биржевых систем:
  • программы мониторинга торговой системы;
  • сервисов обработки рыночных данных;
  • интеграционных сервисов;
  • системы управления торгами;
  • Software Development Life Cycle и DevOps
    (Continuous Integration, Auto Deployment,
    Code Coverage) и многое другое.
что ты получишь?
  • Усовершенствуешь
    навыки программирования
    на C/C++, Python, JAVA
  • Познакомишься с лучшими практиками и технологиями
    в крупной технологической компании
  • Станешь частью
    команды профессионалов
    ИТ-индустрии
Нам по пути, если ты:
  • студент 3-4
    курсов или 1 курса
    магистратуры очной
    формы обучения;
  • готов работать
    от 30 часов
    в неделю;
  • любишь
    общаться с людьми
    и анализировать
    массивы информации;
  • любознателен и
    интересуешься
    информационными
    технологиями;
  • предлагаешь новые
    идеи и стремишься
    находить лучшие, а не привычные решения.
интервью
Читайте интервью с управляющим директором по информационным технологиям Московской биржи Сергеем Поляковым о High Perfomance разработке, устройстве биржи и об особенностях работы внутренней кухни
IT-департамента: 
Вы будете
программировать деньги.
Во всех смыслах.
Читать
задание

Для того чтобы попасть в команду Московской Биржи, тебе предстоит выполнить тестовое задание, о котором ты узнаешь из текста ниже. Прежде чем приступать к его выполнению, запомни простые рекомендации.

  • Не выкладывай собственные алгоритмы решения до
    окончания конкурса — этим ты ухудшаешь собственные
    шансы на победу, ведь твоими наработками может
    воспользоваться кто-то другой;
  • Не мешай другим участникам выполнять конкурсное
    задание: не сбивай с толку, не обманывай.
    Лучше воздержись от комментариев, если сам
    принимаешь участие.
  • Побеждай!

Участники, чье решение будет максимально соответствовать условиям,
пройдут собеседование с наставниками и станут частью команды
биржевых разработчиков! Итак, удачи! Стартуем:

дано

1) Файл src.txt - содержит текст, который подвергнут шифрованию. Задание содержит пример зашифрованного текста на английском (использована кириллица в качестве алфавита замены) Пример.txt. Шифрованию подвергаются только символы исходного алфавита (знаки препинания и иные символы остаются без изменения).

2) Язык оригинального текста до шифрования (входной параметр командной строки «–l») {en, es, fr};

Примечание:
1) путь к файлу src.txt должен приниматься в параметрах командной строки («-i»);
2) путь к файлу с результатом обработки out.txt должен приниматься в параметрах командной строки («-o»);
3) Языки: en – английский, es – испанский, fr –французский;

требуется

1) Расшифровать предоставляемый зашифрованный файл, либо скомпрометировать максимально возможное количество символов исходного алфавита. При этом, необходимо реализовать алгоритм, который будет сохранять работоспособность в том числе и на коротких (3-4 слова) текстах (не рекомендуется использовать метод частотного анализа!).

2) Снабдить приложение тестовым шифртекстом (см. описание ниже по тексту – каталог test) и скриптом test.bat(sh), который позволит запустить и проверить работоспособность приложения «из коробки».

требования к оформлению работ

1) Приложение (скрипт) должно принимать на вход 3 параметра – язык, путь к файлу src.txt, путь к создаваемому файлу out.txt (например: «run –l en –p “С:\test\src.txt” –o “С:\test\out.txt”» или «run –l es –i “./src.txt –o ./out.txt» ).

2) Выполненная работа должна содержать архив с каталогами bin, src, sdk и файлами run.bat (или run.sh для Linux) и install.bat (или install.sh для Linux).

3) Архив должен содержать ваше резюме отдельным файлом.



Каталоги содержат:
• src – исходный код приложения
• bin - запускаемый ресурс (целевая ОС - windows 7 (x64) или ubuntu-14.04.3 (x64)) и все необходимые для запуска библиотеки, словари…
• sdk – все необходимые ресурсы для установки на целевой ОС (либо скрипты для скачивания из Internet)
• test – каталог, который содержит тестовый зашифрованный текст, на котором отлаживал работу приложения разработчик (который позволяет проверить работу приложения «из коробки»)

Скрипты:
• run – скрипт запуска приложения (скрипт принимает три параметра: см. П.1)
• install – скрипт дополнительной настройки окружения (скрипт настраивает окружение; при необходимости устанавливает библиотеки из Internet или каталога sdk)
• test – скрипт, который позволяет запустить и проверить работоспособность приложения «из коробки» (при этом используется зашифрованный текст, сгенерированный самим разработчиком из каталога «test»)
В результате работы test (обработки src.txt) должен быть создан файл (out.txt), который содержит список скомпрометированных символов (в фиг. скобках) и сам частично или полностью расшифрованный текст. Если полностью расшифровать файл программа не может, то она должна оставить на месте нерасшифрованного символа символ шифртекста.
Например, если в качестве исходного текста (src.txt) будет передан отрывок из примера:
шувои эаы уытфвзы, йпш збо бъъчй б
которому соответствует открытый текст:
using the service, you can apply a
то out.txt должен содержать расшифровку в следующем виде:
SEQ {U,S,G,T,P,V,Y,A}:
USвоG Tаы SытVвзы, Yпш зAо APPчY A

Т.е. символы исходного текста необходимо выводить в верхнем регистре, а зашифрованного в нижнем.

критерии оценки приложения

1) количество расшифрованных символов
2) скорость работы приложения;

Подсказки:

1) Алгоритм расшифровки должен использовать словарь исходного языка. Словарь должен учитывать падежи, времена, спряжения и иные вариации слов исходного алфавита.
2) Количество символов, скомпрометированных на предоставляемом зашифрованном тексте (могут предоставляться тексты различной величины И СОДЕРЖАНИЯ), будет сильно зависеть от

  • полноты словаря;
  • величины зашифрованного текста;
  • корректности выбранного алгоритма.

Задача решается методом кроссворда (слова шифртекста следует "пересекать" по одинаковым символам шифртекста в рамках словаря соотв. языка).

1. создать словарь языка (с учетом падежей, склонений, времен),
2. выбрать два/три слова из шифртекста (с одинаковыми символами в разных словах)
3. выяснить какие слова из словаря могут соответствовать зашифрованным исходя из распределения одинаковых символов по позициям в различных словах

Скачать архивЗагрузить решение