Московский физико-технический институт.
ФПМИ.
Теория формальных языков.
Домашнее задание №3
Задача 1. Постройте ДКА для языка слов, задаваемых выражением a(a(ab)∗ a(ab)∗ + b)∗ .
Задача 2. (Практический пример из жизни 1) Ленивый Павел не может настроить спам-
фильтр системы для автоматического ответа на принятые задания по курсу Технологий Про-
граммирования. Помогите ему написать регулярное выражение, которое по теме письма опре-
деляет, указана ли тема письма корректно. Для этого посмотрите на репозитории, которые
клонируются из github и выделите группы, которые позволяют найти из текста ссылку на ре-
позиторий, а из ссылки на репозиторий - пользователя и название репозитория.
Задача 3. (Практический пример из жизни 2) Напишите регулярное выражение для пред-
ставления заработной платы в том виде, в котором она указывается в объявлениях о работе.
Учтите, что может быть указан размер зарплаты в час, в неделю, в месяц или в год. Она может
включать или не включать знак доллара или другой валюты. Рядом может находиться слово
или слова, обозначающие, что речь идет о зарплате. Предложение: просмотрите списки вакан-
сий на сайтах работы (например, [Link]), чтобы получить представление о том, какие образцы
вам могут пригодиться. В виде отчета оформите:
• Списки ссылок на те страницы, которые использовались для анализа.
• Типы вакансий, города, тип занятости, используемые для построения регулярного выра-
жения.
Задача 4. (Практика упрощение) Если вам лень решать контрольную, то можно реализо-
вать построение ДКА. Необходимо реализовать код, который по НКА делает следующие вещи:
• Убирает eps-переходы
• Строит ДКА
Код необходимо покрыть тестами так, как мы делали это на курсе Технологий Программи-
рования.