[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

Re: [FWP] Shortening



On Wed, Mar 07, 2001 at 11:44:16PM -0500, Keith Calvert Ivey wrote:
> Using Robin's change at the start and omitting most of the dollar signs 
> (to be restored later with a regex), I've reduced it from the original 
> 526 (http://www.cs.cmu.edu/~dst/DeCSS/Gallery/qrpff.pl) to 503 bytes:
> 
> $_='$/=\2048;while(<STDIN>){$a=29;c=142;if((@a=unx"C*",_)[20]&48){h=5;
> _=unxb24,join"",@b=map{xB8,unxb8,chr(_^$a[--h+84])}@ARGV;s/...$/1$&/;d=
> unxV,xb25,_;$b=73;e=256|(ord$b[4])<<9|ord$b[3];d=d>>8^(f=(t=255)&(d
> >>12^d>>4^d^d/8))<<17,e=e>>8^(t&(g=(q=e>>14&7^e)^q*8^q<<6))<<9
> ,_=(map{_%16or+t^=c^=(m=(11,10,116,100,11,122,20,100)[_/16%8])&110;t
> ^=(72,@z=(64,72,$a^=12*(_%16-2?0:m&17)),$b^=_%64?12:0,@z)[_%8]}(16..271)
> ) [_]^((h>>=8)+=f+(~g&t))for@a[128..$#a]}print+x"C*",@a}';s/x/pack+/g;
> s/\b[c-q_]\b/\$$&/g;eval


This starts with an assignment to $_, using five chars + text.

You can save one char this way:

   s''$/=\2048;while ... print+x"C*",@a}';


Abigail

==== Want to unsubscribe from Fun With Perl?  Well, if you insist...
==== Send email to <fwp-request@technofile.org> with message _body_
====   unsubscribe