UPDATE: I've done it!!!! 4 lines:
so i've been trying to compress these obfus for ages into a single 4 line sig. unfortunately i can only just get it shorter than 5 lines.
it's all explained here:
SPOILER:
it basically does 2 passes using depth first search:
It uses a horrible horrible hack for the select (9x3e7 which takes ~10 ms on my machine, but YMMV, if it works at all... (you can increase the e7 to slow down, lower it to speed up)@m=((31,(15)x8)x8,(31)x9);$m[$c]|=16,!(@a=grep/-?./&!(16+$|*$'&$m[$c+$ +&] ),-18,11,94,-92)?$c=pop@p:${$_=$a[rand@a];s/-?.//;push@p,$c;$m[$c]&=~( +8/ $_);++$u-64?$m[$c+=$&]&=~$_:map$_&=15,@m,$c=$|=1},$|&&9x3e7,print"\ec" +, map$_%9?($_-$c?$m[$_]&2?_:$":o).($m[$_]&8?"|":_):$/,1..72until$c>70&$|
also still needs vt100 (for \ec).
and yes, had to make some allowances to get it into 4 lines... ho hum.
al
the original post is in the readmore:
so i've been trying to compress these obfus for ages into a single 4 line sig. unfortunately i can only just get it shorter than 5 lines.
so here's the best i can do (including suggestions from people here), as ever it requires VT100.
if anyone can golf it down to 4 lines (of 72 chars - i need to lose 42 chars) i'd be@m=((31,(15)x15)x10,(31)x16);$m[$c]|=16,!(@a=grep!($m[$c+$$_[0]]&16+$s +*$ $_[1]),[-1,8],[1,1],[16,4],[-16,2])?$c=pop@p:${($i,$j)=@{$a[rand@a]};$ +m[ $c]&=~8/$j;push@p,$c;$m[$c+=$i]&=~$j;++$u-150||map$_&=15,@m,$c=$s=1}, +$s &&select$x,$x,$x,.1*print"\ec",(_)x31,map$_%16?($_-$c?$m[$_]&2?_:$":o) +.( $m[$_]&8?"|":_):"$/|",0..160until$c>158&$s
- surprised :-)
- eternally grateful
it's all explained here:
SPOILER:
it basically does 2 passes using depth first search:
#set up maze - only border visited @m=((31,(15)x15)x10,(31)x16); # until loop starts now #say we've visited current square $m[$c]|=16, #find possibilities (on 1st pass ($s=0) just check visited # on second pass also check the bit is unset for that direction # 4 #8 1 # 2 !(@a=grep !($m[$c+$$_[0]]&16+$s*$$_[1]), [-1,8],[1,1],[16,4],[-16,2] )? # if one isn't found then go back $c=pop@p: # if one is found, then pick it and unset the bits (ie allow access th +rough) ${ ($i,$j)=@{$a[rand@a]}; $m[$c]&=~8/$j; push@p,$c; $m[$c+=$i]&=~$j; # and finish if we visit them all (unset visited bit in @m) ++$u-150||map$_&=15,@m,$c=$s=1 } # and draw (space is here for formatting in wrapped version) $s&& select$x,$x,$x,.1*print"\ec", (_)x31, map$_%16?($_-$c?$m[$_]&2?_:$":o).($m[$_]&8?"|":_):"$/|",0..160 # and redo unless it's the end until$c>158&$s
Love Handles & fistycuffs
Al
EDIT: clarified the 4 line limit!
2nd update: golfed it down to 5 lines!
And again: - thanks to people's suggestions (especially mtve & benizi) it's now down to 41 chars over the 4 line limit.....
and again: I found a bug in the original code which i've fixed.
Back to
Obfuscated Code