use Text::Format;
29.01.2014, 21:34, "arto" <[email protected]>:
29.01.2014, 15:38, "Андрей П. Ковбович" <[email protected]>:Всем привет!Неплохое тестовое задание у Яндекса для разработчиков на Startup Camp.Кратко условия задачи:Дан текст, состоящий из нескольких строк произвольной длины. Нужно разбить его на абзацы и юстифицировать, то есть оформить в виде текста шириной в N (20 - 120) символов, выровняв по правой и по левой границе.Правда в примере вывода допущена ошибка: (Яндекс, что за дела?)в 4ой строке 2го параграфа, строка заканчивается на "velit esse"а должно быть "velit esse cillum"Ну и я не прошел мимо и запостил свой вариант https://gist.github.com/akovbovich/a6b6de7ce540b9424f37Было бы интересно посмотреть и на другие варианты решения.Однострочник получается корявый, а так:#! /usr/bin/perl
#
my ( $a1, $a2 ) = ( shift, shift );
sub A {
my $str = scalar reverse $_[0];
my ( $from, $to ) = ( " ", " " );
while (length $str < $a1) {
unless ($str =~ s#(\S)$from(\S)#$1$to$2#) {
$from .= " "; $to .= " ";
}
}
return scalar reverse $str;
}
local $/;
foreach $a (map { s#\n# #g; s# +# #g; $_ } split "\\s*\n\n+|\\s*\n(?=[[:upper:]])", <>) {
if (length $a > $a1-$a2) {
my @a = grep { m#\S+# } split "(.{2,$a1})( +|\$)", " "x$a2 . $a;
my $l = pop @a;
print join "\n", map({ A $_ } @a), $l, "", "";
}
else {
print " "x$a2, $a, "\n\n"
}
}Результаты:# perl x.pl 40 2 test.txtLorem ipsum
Lorem ipsum dolor sit amet,
consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor
in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia
deserunt mollit anim id est laborum.# perl -CSI x.pl 48 4 test.utf8Не совсем понятно, какое отношение системные
логи имеют к специфичным логам программы.
Ну и кто сказал разработчикам wot, что
loggerd будет иметь имено те ключи какие им
надо, а не как в журнале windows, где например
название программы в логе инсталляций
присутствует только где-то в человекочитаемом
поле description у события.--wbw, artur,--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org
Oleg Alistratov
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
