Eugene Ardarov пишет:
Ох как оказывается еще можно было сократить!
Вот это место
p...@y,$_;$n=$#y if/x/;$p[1]=$#y if/o/
можно заменить на
$...@y if/x/;$p[...@y if/o/;p...@y,$_
(еще -2 символа).
Плюс:
}...@f;$h=-1;$l=1;$k=-($...@f)
заменить на
}$h=-1;$l...@f;$k=-($...@f)
(еще -1 символ).
А каким образом вот это работает в конце?
}{...@y;pr...@y
Просто нет возможности сейчас читать доку.
Ещё 1 символ выгадываем, заменив @y на @; и опустив ; в конце:
perl -MO=Deparse -naF -e
'map{/[h-l]/?do{$;[$n]=o;p...@p,$n;$;[$p[$t+=$;[$n+=$$_]!=1]]="-";$;[$n]=x}:do{$n=@;
if/x/;$p[1]=@; if/o/;push@;,$_};$h=-1;$l...@f;$k=-($...@f)}{pop@;;print@'
LINE: while (defined($_ = <ARGV>)) {
our(@F) = split(//, $_, 0);
map {/[h-l]/ ? do {
$;[$n] = 'o';
push @p, $n;
$;[$p[$t += $;[$n += $$_] != 1]] = '-';
$;[$n] = 'x'
} : do {
$n = @; if /x/;
$p[1] = @; if /o/;
push @;, $_
};
$h = -1;
$l = 1;} @F;
$k = -($j = @F);
}
{
pop @;
print @;
}
-e syntax OK
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org