Василий Буров

В предыдущем номере "КвШ" с нами поделилась впечатлениями о Софтулийских играх 1998 года их участница Анна Шмелева. Сегодня один из отцов-основателей первого российского конкурса программистов рассказывает о "софтулийском долгоборье" и приглашает читателей к участию в марафоне.

Чем отличается настоящий программист от обычного человека? Не только тем, что он знает языки программирования и умеет укрощать непокорную Windows. Отличается он еще и тем, что любит решать интересные интеллектуальные задачки.

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

Сейчас вашему вниманию предлагаются задания, подготовленные компанией "МедиаЛингва". Эта компания специализируется в области так называемого искусственного интеллекта, и предлагает для разминки несколько простых и не совсем простых заданий из этой области. Эти задания предлагались на заочном туре Софтулийских игр 98. Так что сейчас у вас есть прекрасная возможность проверить свой уровень, да и просто с интересом и пользой провести время.

Призы

Первое место - электронный англо-русский словарь "МультиЛекс 2.0 Профессиональный".

Второе место - интеллектуальная поисковая система "Следопыт".

Третье место - электронный англо-русский словарь "МультиЛекс 3.0 Популярный".

Решения присылать по адресу sftgames@burov.msk.ru

Срок выполнения: 28 февраля 1999 года


ЗАДАНИЯ


1. Игра "Угадай животное" - вариант 1.
Компьютер угадывает животное, задуманное пользователем. Приблизительный сценарий игры: компьютер задает вопросы, на который пользователь может давать ответы "да" или "нет", и угадывает животное. Начальные вопросы задаются о признаках животного (оно серое?) или о конкретных животных (это слон?), последний вопрос - всегда о конкретном животном (это бегемот?). Если вопросы кончились, а животное не угадано, компьютер спрашивает, чем оно отличается от того, которое, по его мнению, подошло, добавляет имя животного и его признак в базу данных и в следующий раз сумеет отличить на этом шаге новое животное.
Оценка сложности задания - 4 балла.

2. Игра "Угадай животное" - вариант 2.
Пользователь угадывает "задуманное" программой животное. Программа может отвечать "да", "нет", "не знаю". Пользователь может использовать (по своему усмотрению!) признаки животных, их синонимы, вводя их с клавиатуры, а не выбирая из фиксированных списков. Реализация не должна давать слишком высокий процент ответов "не знаю" - игра должна быть осмысленной. Желательно, чтобы при правильном угадывании пользователь вознаграждался - поздравлениями, картинкой (например, изображением животного) или звуком.
Оценка сложности - 10 баллов.

3. Игра "Чепуха" - синтез изображений.
Игра позволяет синтезировать изображения. Пользователь (пользователи) по очереди выбирает части тела нового существа, а программа собирает эти изображения в единое целое. При сборке изображения должна поддерживаться гладкость, то есть должны правильно состыковываться размеры рук, ног, шеи и так далее. Также желательна цветовая гладкость - отсутствие резких перепадов цвета и тона.
Оценка сложности - 10 баллов.

4. Игра "Чепуха" - синтез текстов.
1-й вариант - синтез пародийных компьютерных или бульварных новостей.
Программа должна собирать несколько десятков типов новостей, подставляя случайным образом их части. Каждая новость должна состоять из одного-двух предложений и заголовка. Заголовки должны соответствовать содержанию новости, сами новости должны быть после подстановки частей грамматически правильными, на литературном русском языке, и выглядеть естественно. Не должно быть явной повторяемости, то есть список типов и наборы частей должны быть достаточно богатыми. Ненормативная лексика, жаргон и грубый юмор не допускаются. Нежелательно употребление имен известных персон в обидном контексте, "обидных" и "кровожадных" высказываний.
Оценка сложности - 7 баллов.

2-й вариант - синтез пародийных гороскопов.
По заданию пользователем своих "параметров" и по текущей дате синтезируются гороскопы. Гороскопы должны быть грамматически правильными и выглядеть естественно. Ненормативная лексика и грубый юмор не допускаются.
Оценка сложности - 6 баллов.

3-й вариант - синтез анекдотов.
Пользователь выбирает действующих лиц, и, возможно, ситуацию из предложенных списков. Программа формирует анекдот на заданную тему и с заданными участниками. Тексты анекдотов должны варьироваться не только подстановками участников, но и конкретными грамматическими конструкциями. Набор типов должен быть достаточно большим, чтобы исключить очевидную повторяемость. Получаемый текст должен быть грамматически гладким (учет пола и числа участников и т. п.). Ненормативная лексика, сальности и грубый юмор не допускаются. Возможен автоматический вариант синтеза, без выбора пользователем.
Оценка сложности - 5 баллов.

5. Словесный счетчик посетителей для Web-страниц.
Программа должна по задаваемому извне числу, например 52151, синтезировать всегда грамматически правильную фразу в формате: "Вы - пятьдесят две тысячи сто пятьдесят первый посетитель нашей страницы".
Оценка сложности - 3 балла. То же для английского языка - 2 балла.

Как выполнять задания?

Можно выполнить любое из заданий по выбору, можно - несколько. Задания ранжированы по степени трудности, по десятибалльной шкале. Результаты будут оцениваться по степени трудности задания и по степени законченности решения, а затем присвоенные баллы будут суммироваться, если участником прислано несколько заданий. Экспертами будут выступать специалисты компании "МедиаЛингва", работающие в области искусственного интеллекта.

Задания намеренно сформулированы несколько лаконично, чтобы оставить участникам простор для творчества. По возможности их следует выполнять на языке C или C++ и присылать в виде исполняемых модулей, вместе с исходными текстами для оценки не только работоспособности, но и "качества" программирования. Впрочем, если вы предпочитаете какой-либо другой язык программирования - можете сделать решения на нем.


6. Распознаватель чисел и дат.
Задача, обратная к заданию 5, - необходимо распознавать числа или даты, записанные словами, и переводить в числовую форму. При этом числа должны распознаваться во всех формах, которые встречаются в текстах (пятидесяти пяти, двух тысяч пятисот одного, восьмого марта, к одиннадцатому сентября).
Оценка сложности: распознавание чисел - 9 баллов; распознавание дат - 4 балла.


Ждем ваших решений. Успешной работы!
С уважением, Василий Буров