It is parametised so it will take the number of boxes in the output as an argument in the form:
# perl blah.pl 19x20
(19x20 is the default)
This will produce a variable sized file (default is normally around 6Mb) called al.XXX (where XXX would reveal the surprise) in the directory from which it is run
(that's supposed to be a clapboard btw!)$_=q^($w,$h +)=s plit/x/,shift||"19x20";$q=10+10*$w;$r=20+10*$h;@m=((31,(1 +5)x ($w-1))x$h,(31)x$w);$m[$c]|=16,!(@a=grep!($m[$c+$$_[0]]&16+$|*$$_[1]) +,[- 1,8],[1,1],[$w,4],[-$w,2])?$c=pop@p:${($i,$j)=@{$a[rand@a ]};$m[$c]&=~ (8/$j);push@p,$c;$m[$c+=$i]&=~$j;++$u-$h*$w+$h||map$_&=15,@m,splice(@ +p), $c=$|=1}until$|&$c+2>$w*$h;$C=$q-4*int$q/4;$A=($q+$C)*$r;$u=pack"x"x( +($q +$C)*$r);subZd{my($f,$g,$h,$i,$e)=@_;@a=sort{"000$a"<=>"000$b"}$h,$i| +|$h ;for($a[0]..$a[1]){$s=($r-$_)*($q+$C)+$f;vec($u,$_,8)=$e||2 for$s..$s ++$g -1}};subZt{$a=shift;$x=10*($a%$w);$y=10*(2+int$a/$w)};dZ9,$q-20,10;dZ +9,$ q-20,$r-10;dZ9,1,10,$r-10;dZ$q-11,1,10,$r-10;map{t$_;if($_%$w){$m[$_] +&2? d$x-1,11,$y:"";$m[$_]&8?d$x+9,1,$y-10,$y:"";}}0..-1+$w*$h;$F="LIST";o +pen (FH,">al.avi");binmodeZFH;selectZFH;printZpack"V*",/\d/?$_:unpack"V*" +,$_ Zfor"RIFF",(1256+($A+24)*($B=3+scalar@p)),"AVIZ$F",1216,"hdrlavih",56 +,50 0000,32,0,2064,$B,0,1,$A,$q,$r,(0)x4,$F,1140,"strlstrh",56,"vids",(0) +x4, 1,10,0,$B,$A,-1,(0)x3,"strf",1064,40,$q,$r,pack("vv",1,8),0,$A,(0)x4, +pac k(("C"x1024),(0xff)x3,0,128),$F,(4+($A+8)*$B),"movi";map{printZSTDOUT +"." ;t$z||1;$l=$x;$t=$y;t$_;$ri=$x;if($l>$x){$ri=$l;$l=$x}d$l+2,5+$ri-$l, +($t <$y?$t:$y)-7,($t<$y?$y:$t)-3,1;$z=$_;print"00db".pack("V",$A).$u}@p,( +-1+ $w*$h)x3;print"idx1".pack"V",16*$B;$o=4;for(1..$B){print"00db".pack"V +VV" ,16,$o,$A;$o+=$A+8}^;s#((?{$a.=$+})\s?(\S*)\s?)*#$a=~s/Z/ /g;$a#see
If there is enough interest i'll write a deobfuscation/explanation of what went into it,
I've written a clean version here.
In the meantime some of my references and some other notes are in the spoiler below:
I hope you all enjoy it.
Alex
update: Add link to explanation.
Also use V not L (see this) to force correct endianness - this should now work on mac's
and fixed a bug where it didn't work for 5.8.8
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Let's go to the movies
by liverpole (Monsignor) on Apr 11, 2006 at 11:56 UTC | |
Re: Let's go to the movies
by marto (Cardinal) on Apr 11, 2006 at 10:08 UTC | |
Re: Let's go to the movies
by eric256 (Parson) on Apr 11, 2006 at 16:49 UTC | |
by teamster_jr (Curate) on Apr 12, 2006 at 10:23 UTC | |
Re: Let's go to the movies
by CountZero (Bishop) on Apr 11, 2006 at 21:53 UTC | |
Re: Let's go to the movies
by mikeock (Hermit) on Apr 11, 2006 at 19:12 UTC | |
Re: Let's go to the movies
by Akhasha (Scribe) on Apr 15, 2006 at 13:40 UTC | |
Re: Let's go to the movies
by parv (Parson) on Apr 12, 2006 at 20:16 UTC | |
Re: Let's go to the movies
by wulvrine (Friar) on May 02, 2006 at 15:02 UTC |