[Moscow.pm] YAPC::Russia Perl Golf 2009

spleenjack spleenjack на gmail.com
Вт Май 19 02:40:11 PDT 2009


Вчера обнаружил в своем скрипте ошибку :(

     #!perl -naF
     map{
         if(/[hjkl]/){
             $y[$n]='o';
             push на p,$n;
             $y[$p[$t+=$y[$n+=${$_}]!=1]]='-';
             $y[$n]='x'
         }else{
             push на y,$_;
             $n=$#y if/x/;
             $p[m/o/]=$#y
         }
     }@F;
     $h=-1;$l=1;$j=$#F+1;$k=-$j;
     END{pop на y;print на y}

Вот здесь

     $p[m/o/]=$#y

заковырка: если после первого смещения головы питона он натыкается на 
яблоко, то в самом конце всего поля @y перенос строки заменится на '-'.

Исправляется это заменой строки на старый вариант:

     $p[1]=$#y if/o/

В итоге, если еще чуть-чуть заоптимизировать, получается 181 байт:

     #!perl -naF
     map{
         if(/[hjkl]/){
             $y[$x]='o';
             push на p,$x;
             $y[$p[$o+=$y[$x+=${$_}]!=1]]='-';
             $y[$x]='x'
         }else{
             $x=@y if/x/;
             $p[1]=@y if/o/;
             push на y,$_
         }
         $l=1;$h=-1
     }@F;
     $j=@F;$k=- на F;
     END{pop на y;print на y}

Блин, мне стыдно %( Выиграл с глючным скриптом...


Подробная информация о списке рассылки Moscow-pm