По-русски  English

YAPC::Russia::Golf 2008

Правила  Решения  Видео

YAPC::Russia::Golf — конкурс на решение задачи самым коротким способом, который проводился на конференции YAPC::Russia «May Perl» 2008 17 и 18 мая 2008 года в Москве.

Задачи

Победителем считается тот, кто напишет такую программу, которая содержит минимальное число непробельных символов. При решении можно пользоваться любыми ключами интерпретатора (например, -l, -n, -p), но эти символы (вместе с дефисом) прибавляются к общему количеству символов программы. Путь к интерпретатору перла (shebang) в счет не идет, но если там присутствуют ключи, то они считаются.

Решение нужно было прислать на адрес golf@yapcrussia.org не позднее 14 часов 18 мая 2008 г. Разбор решений и вручение призов состоялся 18 мая в 15:30 в первом зале.

Задача 1

С помощью регулярного выражения легко понять, что число делится на 4 нацело:

#!perl
 while(<>) {
     if( /[02468][048]$/ || /[13579][26]$/ || /^[048]/ ) {
         print "yes\n";
     } else {
         print "no\n";
     }
 }

Попробуйте написать без использования арифметических, битовых, строковых операций и без оператора x (только управляющие конструкции и регулярные выражения) проверку делимости на 11. На STDIN подаются натуральные числа, меньшие 1080. Для каждого, если число делится нацело, напечатать yes, если не делится — no.

Пример входных данных Пример выходных данных
4no
33yes
910095859353843713526357940283  yes
9117517no

Задача 2

На STDIN на отдельной строке задаётся число N, после чего идет блок из строк одинаковой длины, состоящих из пробелов и символов #. Длина строк — не более 200, количество строк — не более 200.

Нужно найти максимальное число символов #, попадающих в любой из прямоугольников, площадью точно равных N и всеми своими клетками лежащих внутри заданного блока.

Пример входных данных

Пример выходных данных
14

Пояснение. Прямоугольников 1 × 25 целиком не помещается ни одного, поэтому их мы не учитываем совсем, прямоугольники 25 × 1 накрывают максимум 13 клеток, а прямоугольник 5 × 5, накрывающий 14 символов, показан ниже: