[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