http://qs321.pair.com?node_id=301963


in reply to updated version of old sig

I know it's really minor, but every stroke counts:

You have several ternary ops using '==' (e.g. $_==16?$p:$_&=15). Since the variables're all integers, you can accomplish the same thing using '-' and reversing the order of the options. (e.g. $_-16?$_:$p&=15).

In general X==Y?A:B is equivalent to X-Y?B:A. (Note that, in the more complicated (multiple-)ternaries, you'll have to do a bit more shuffling.)

Also, I thought I should tell you that your latest version (4 lines + 70) doesn't work properly on my machine:
(This is perl, v5.8.0 built for i686-linux)
It gets to the upper left corner, the entire grid changes to squares, and it continues to wander.

Update: Or at least that's what it did when I forgot to edit out the other <code> sections... (oops)

Replies are listed 'Best First'.
Re: Re: updated version of old sig
by mtve (Deacon) on Oct 26, 2003 at 10:07 UTC

    Few more minor suggestions

    @m=((16,(15)x15)x10,(16)x16);$m[$c]|=16,!(@a=grep!($m[$c+$$_[$l=0]]&16 ++$ s*$$_[1]),[-1,8],[1,1],[-16,2],[16,4])?$c=pop@p:${($i,$j)=@{$a[rand@a] +}; push@p,$c;$m[$c]&=~(8/$j);$m[$c+=$i]&=~$j;++$v-150||map$_-16?$_:$p&=15 +,@ m,$c=$s=1},$s&&select$q,$q,$q,.1*print"\ec",'_'x31,map$l++%16?($l-1-$c +?$ _&2?_:$":o).($_&8?'|':_):"$/|",@m[0..160]until$c>158&$s