Pull to refresh

Unknown Language Rounds

Reading time3 min
Views1K

Здесь пойдет речь немного не о том спортивном программировании, к которому многие привыкли. Недавно,
на Codeforces был проведен экспериментальный раунд Unknown Language Round #1.
На нем участникам было предложено решить несколько несложных задач (первая,
вторая, а вот и все
остальные
). Особенность раунда — задачи можно решать только на одном языке программирования, который
не известен участникам до начала раунда. Было анонсировано, что язык не является
mainstream языком. Иначе говоря, участникам предлагалось за 2.5 часа соревнования на скорость разобраться
в незнакомом языке и решить задачи на нем.


Языком этого раунда оказался Tcl. Как написано в
Википедии: «Tcl (от англ. Tool Command Language — `командный язык инструментов', читается `тикль' или `ти-си-эль')
— скриптовый язык высокого уровня».
Так же участникам предоставлялась простейшая программа на Tcl (складывающие два целых числа) и возможность писать
код в WYSIWYG-редакторе с возможностью запуска на стороне сервера (для тех, кто не захотел качать и/или инсталлировать
интерпретатор). Вот ссылка на официальный пост на
Codeforces и обсуждение раунда
.

Результаты превзошли наши ожидания. Многие участники быстро разобрались в синтаксисе и основах незнакомого
языка и быстро начали решать задачи. Некоторым давалось даже писать элегантные решения. Вот, например код на
несложную, но все же задачу. Если коротко, в ней надо
было сортировать строки таблицы по нескольким критериям,
тоже заданным во входных данных.

set a [split [gets stdin]]
set rules [split [gets stdin] ","]
while {[gets stdin line]>=0} {
        lappend li $line
}
set rules [lreverse $rules]
foreach {line} $rules {
        scan $line {%s %s} cname order
        set li [lsort [expr ([string equal $order "ASC"]?"-increasing":"-decreasing")] -index [lsearch $a $cname] $li]
}
foreach {line} $li {
        puts $line
}

После соревнования в дорешивание были сданы и более короткие и элегантные коды.

Судя по отзывам — опыт оказался успешным. Многим участникам понравилось такое развлечение. Видимо, поймали
определенный драйв, разбираясь в языке, соревнуясь в способности быстро вникнуть во что-то новое.

Хочется отметить, что «подобное развлечение» впервые было предложено мной, кажется, пять лет назад.
Саратовский ГУ совместно с компанией Mirantis проводит
ежегодные курсы по Java и C/C++. Я веду курсы по Java — тематика иногда непростая, например, уже на втором занятии пару дней назад мы
изучали, как работает загрузка классов в Java, как писать собственные загрузчики. Отбор слушателей курсов — задача нетривиальная. Желающих приходит 50-100 человек, а отобрать надо
десять человек в каждую из двух групп. Мной был предложен отбор, который состоял из решения простых задачек на
незнакомом языке. Это легко автоматизируется и позволяет оценить способность быстро обучаться, доказывает способность человека в принципе писать
программы, не зависит от знания кандидата в какой-то конкретной области, легко масштабируется на любое число кандидатов. Пожалуй, прошедшие пять
лет доказали его эффективность — люди на курсы отбираются нужные, с ними интересно потом
работать.

Недавно, к нам обратились пользователи из Ирана с предложением повторить эксперимент. Ими были
подготовлены задачи, а Unknown Language Round #2 был назначен на 20-е марта (канун Нового Года в Иране). Конечно,
язык раунда будет другим. Каким именно? Пока секрет:) Вот ссылка на официальный пост и обсуждение.

Приглашаю и вас присоединиться и принять участие в таком необычном соревновании. На этот
раз его продолжительность составит 3 часа, начало 20-го марта в 19:00 (московское время).
Для упрощенной регистрации на Codeforces можно использовать Gmail, OpenID
и даже аккаунт ВКонтакте.

Несколько ссылок:

Tags:
Hubs:
+34
Comments16

Articles

Change theme settings