Let's go to the movies
teamster_jr
created: 2006-04-11 05:08:26
Hello monks,
Here's my latest effort, it's pure perl, so should run anywhere.

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 file call al.avi in the directory from which it is run


                                                           $_=q^($w,$h)=s
             plit/x/,shift||"19x20";$q=10+10*$w;$r=20+10*$h;@m=((31,(15)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;f
 or($a[0]..$a[1]){$s=($r-$_)*($q+$C)+$f;vec($u,$_,8)=$e||2for$s..$s+$g-1}
 };subZt{$a=shift;$x=10*($a%$w);$y=10*(2+int$a/$w)};dZ9,$q-20,10;dZ9,$q-2
 0,$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";open(FH
 ,">al.avi");binmodeZFH;selectZFH;printZpack"L*",/\d/?$_:unpack"L*",$_Zfo
 r"RIFF",(1256+($A+24)*($B=3+scalar@p)),"AVIZ$F",1216,"hdrlavih",56,50000
 0,32,0,2064,$B,0,1,$A,$q,$r,(0)x4,$F,1140,"strlstrh",56,"vids",(0)x4,1,1
 0,0,$B,$A,-1,(0)x3,"strf",1064,40,$q,$r,pack("SS",1,8),0,$A,(0)x4,pack((
 "H"x1024),"f","f","f",0,"a"),$F,(4+($A+8)*$B),"movi";map{printZSTDOUTZ++
 $G,$/;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("L",$A).$u}@p
 ,(-1+$w*$h)x3;print"idx1".pack"L",16*$B;$o=4;for(1..$B){print"00db".pack
 "LLL",16,$o,$A;$o+=$A+8}^;s#((?{$a.=$+})\s?(\S*)\s?)*#$a=~s/Z/ /g;$a#see

(that's supposed to be a movie frame clap board btw!)

I've tested the output in windows media player and mplayer (on windows and linux), however i couldn't get it working with winamp - i tried to fix it, but i'm not entirely sure it's not winamp.

If there is enough interest i'll write a deobfuscation/explanation of what went into it, in the meantime here are some of my references:

perlmonks.org content © perlmonks.org and Akhasha, CountZero, eric256, liverpole, marto, mikeock, parv, teamster_jr, wulvrine

prlmnks.org © 2006 edmund von der burg (eccles & toad)

v 0.03