Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re: Re: Huffman once again

by fsn (Friar)
on Jul 17, 2002 at 20:06 UTC ( [id://182565]=note: print w/replies, xml ) Need Help??


in reply to Re: Huffman once again
in thread Huffman once again

My reply back:

Ok, here we go...

This is my second try at the huffman decompresser. I have changed the implementation a bit, replacing the arrays with strings. I've also applied some of the suggestions jynx made, inlineing the literals, using 'compliant' variable names ($; was a fine twist..).

#!/usr/bin/perl do{$_=ord substr"1234567 89:her;k<t=alcjusnop",$:*2+ (((ord(substr"\x00\x50\xA5\xd2\xc5\xbb\x96\xef\x06". "\xbc\x8e\xe0",$;/8,1)&2**(7-$;++%8))==0)?0:1),1;$:= ($_&240)==48?$_&15:-1+print chr}until$;==91

Replies are listed 'Best First'.
Re: Re: Re: Huffman once again
by fsn (Friar) on Jul 17, 2002 at 20:16 UTC
    Here is jynx's response back, and I think this will be the final version. It sure looks compact and unreadable to me now. And, yup, it was an enjoyable excersize...

    update: after reading fsn's scratchpad (which betters my attempts a bit :), there are two last things i can think of that may help: (1) reducing one more variable (2) removing the do{} block...
    $_=ord substr"1234567 89:her;k<t=alcjusnop",(($_&240)==48?$_& 15:-1+print chr)*2+((ord(substr"\x00\x50\xA5\xd2\xc5\xbb\x96". "\xef\x06\xbc\x8e\xe0",$;/8,1)&2**(7-$;++%8))?1:0),1while$;<92
    Note how since the variable $: was removed, the $; limit had to be increased to 92 to accomodate and finish printing the string. Also the ==0 check was removed and the ==91 check changed to <92...

    Don't know if it's more or less obfuscated, and as i've said i'm not very good, but it seems to be more difficult to parse. i had fun with this exercise, and i hope fsn did as well :-)

    jynx

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://182565]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (2)
As of 2024-04-25 06:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found