Думал я думал, и наконец придумал. Попробуем замутить пародию на perl-golf.
Задание: реализация на перле следующей команды:
Код: Выделить всё
find где-то ! -type dзапускаться должно так:
Код: Выделить всё
perl -w pfind где-тов результате мы должны получить список файлов без каталогов.
ПРАВИЛА:
1. Ответы присылаются мне на ПМ. Я проверяю и публикую здесь в треде под порядковым номером, по очередности получения ответов.
2. "Самовольно" публикуемые ответы к рассмотрению не принимаются.
3. Если подряд приходят несколько сообщений от одного участника, рассматривается самое последнее.
4. При написании ответа необходимо указывать номер ответа, над которым были произведены изменения.
Подсчет результата:
6. Рассматривается и подсчитывается только тело функции find (см.ниже стартовый скрипт), то есть текст между 'sub find{' и '}' включительно.
7. Табуляторы и пробелы перед строками и символы новой строки перед подсчетом будут убираться, так что не стоит в ответе их убирать в ущерб читабельности.
8. Подсчет результата я буду производить так
Код: Выделить всё
$ perl -wle '$text=`cat`;$text=~s/^\s+//mg;$text=~s/\n//mg; print length($text)'9. Соревнование заканчивается 30 июля в 14:00. То есть в это время я принимаю последний ответ, публикую его, поздравляю победителя и сваливаю в отпуск
10. Со своей стороны я обязуюсь регулярно проверять свой ПМ, за исключением выходных, глубоких ночей и времени перемещения между работой и домом. Ну и "форсмажорных обстоятельств"
11. Сам я участвовать не буду, за исключением, если мне покажется, что ваши идеи истощились, а у меня есть что показать. Соответственно, победителем я быть не могу.
Дополнения Срд Июл 21 17:08:07
12. Нельзя изменять имя функции find
13. Обязательно должен быть перевод строки после последней строки вывода
ПЕРВОНАЧАЛЬНЫЙ СКРИПТ
Пускай, стартовый скрипт выглядит так:
Код: Выделить всё
use DirHandle;
# начало проверки
sub find
{
my $d = shift;
my $h = new DirHandle($d) or die "$!";
my @f = $h->read();
for my $i (@f) {
my $p = "$d/$i";
unless ( $i =~ /^\.\.?$/ ) {
if ( -d $p ) {
find($p);
}
else {
print "$p\n";
}
}
}
}
# конец проверки
find($ARGV[0]);ЧТО Я ХОЧУ ВИДЕТЬ ОТ ВАС
Код: Выделить всё
#Ответ на номер 15
sub find
{
bla-bla-bla
}
#Комментарий (*)(*) Комментарий будет добавлен при публикации. Это просто строчка-две безотносительно к заданию (например, "таки я его сделал!")
Вот вроде и все, если что-то забыл -- добавлю.
ВРЕМЯ ПОШЛО!
(и огромная просьба: не флудить в этом треде)