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

    #!perl -naF
    map{
        if(/[hjkl]/){
            $y[$n]='o';
            p...@p,$n;
            $y[$p[$t+=$y[$n+=${$_}]!=1]]='-';
            $y[$n]='x'
        }else{
            p...@y,$_;
            $n=$#y if/x/;
            $p[m/o/]=$#y
        }
    }...@f;
    $h=-1;$l=1;$j=$#F+1;$k=-$j;
    end{...@y;pr...@y}

Вот здесь

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

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

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

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

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

    #!perl -naF
    map{
        if(/[hjkl]/){
            $y[$x]='o';
            p...@p,$x;
            $y[$p[$o+=$y[$x+=${$_}]!=1]]='-';
            $y[$x]='x'
        }else{
            $...@y if/x/;
            $p[...@y if/o/;
            p...@y,$_
        }
        $l=1;$h=-1
    }...@f;
    $...@f;$...@f;
    end{...@y;pr...@y}

Блин, мне стыдно %( Выиграл с глючным скриптом...
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить