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

Ответить