 "be consistent" PerlMonks

Bits & pieces

by bobf (Monsignor)
 on Jul 12, 2005 at 07:08 UTC Need Help??

This started as a test script while I was learning about bit operations, and it slowly evolved into an obfuscated JAPH. I know it exceeds the traditional "4 line rule", but I thought that it would be fun to limit the digits used to only 0 and 1, given the theme. It was not golfed in any way.

Enjoy!

\$_=[[[[{},[]],{0111,'01110111',1000,'11100101'},[[]]],{0001,'01111110' ,0110,'00011010',0100,'011001000011111001111010',0010,'00000100',0011, '01010101000100000001111110100010101000000000101000110000010001001010' .'10100',0101,'011100001001010100000001'},[[]]]];%_=%{\${\${\$_}}}; \$s=eval{\$O=0,\$C=0,\$t='This is my 100th PM post';sub{\$O++,\$C=@_?\$C:eval pack('b*',vec(pack('b*',\$_{1<<(1<<0<<1)*((1<<0+1<<0)+1<<0)}),\$O-1,1<<0 )?\$_{1<<0}:\$_{1<<(1<<1<<1)-1}).\$C.pack('c',vec(pack('b*',\$_{1<<((1<<0) +(1<<1*1<<1)+1<<0)}),(\$O-1)%((1<<0*1<<1)+1<<0),1<<(1<<0+1<<0)+1)).pack ('b*',vec(pack('b*',\$_{1<<((1<<0+1<<0)+(1<<1<<1))}),\$O-1,1)?\$_{1<<((1+ 1<<0)+1)}:\$_{1<<0}).vec(\$t,\$O-1,1<<(1<<1<<1)-(1<<0))};};;\$o=pack('b*', \$_{((1<<1)**(1<<1)-1)**(1<<1)});for(0..unpack('%b*',\$o)-(1<<1)){\$c=\$_- ((\$_-\$_%(1<<1<<1))/(1<<1<<0*1<<1)+(\$_%(1<<1+1<<0)?1:0));;\$i=(vec(\$o,\$c ,(1<<1<<0+1<<0))+(vec(\$o,\$c+1,(1<<1<<1))<<(1<<1<<0+1))>>((1<<1<<1<<1>> 1)-\$_%(1<<1<<1<<1>>1)-(1<<1<<0+1)*(\$_%(1<<1<<1>>1<<1)?0:1)));\$i+=\$i%(1 <<1)?-1:1 if(((\$_+1)%((1<<1+1<<1)+(1<<1)+(1<<1)))&&!((\$_+1)%((1<<1)**( 1<<1)-1))||\$_+1==(1<<(1<<1+1<<1>>1))+(((1<<1)+1)<<1));\$T=vec(pack('C', \$i),0,(1<<1<<1>>1<<1))+vec(pack('b*',\$_{(1+((1<<1)**(1<<1))**((1<<1)** (1<<1)-1))}),\$_,1)*(1<<(1<<(1<<1)))+(1<<((1<<1**1<<1)+1));;print pack( 'c',(\$T+=\$T==(1<<((1<<1+1<<1>>1)+1))?0:(1<<(((1<<1+1<<1)>>1)+(1<<0*1<< 1))))-=\$_%(1+(((1<<1+1<<1)>>1)+(1<<0*1<<1)<<1))==0?(1<<(((1<<1*1<<1<<1 )+(1<<1<<1>>1))>>1)):0);&\$s}print pack('c',\$s->(1<<0)^unpack('c',(pack ('b*',\$_{(1<<1*1<<1*1<<1)*((1<<1)**(1<<0<<1)-1)**(1<<1<<1>>1<<0)}))));

Hint: the bit shifts are fun, but they aren't the main point of the obfuscation.

Tested on

• perl 5.005_03 built for i386-linux (little endian)
• perl 5.6.0 built for sun4-solaris (big endian)
• perl 5.6.1 built for MSWin32-x86-multi-thread (little endian)
• perl 5.8.0 built for i386-linux-thread-multi (little endian)
• perl 5.8.3 built for i686-linux (little endian)
• perl 5.8.4 built for i386-linux-thread-multi (little endian)

Replies are listed 'Best First'.
Re: Bits & pieces
by jdalbec (Deacon) on Jul 16, 2005 at 03:18 UTC

Good job! Included below is an explanation of this JAPH which is a bit (ba-dum-bum) more verbose. Your analysis hit on the big points, but I wanted to fill in some of the more subtle reasoning.

Create A New User
Node Status?
node history
Node Type: obfuscated [id://474186]
Approved by marto
Front-paged by planetscape
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (4)
As of 2019-10-19 04:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
In 2019 the site I miss most is:

Results (45 votes). Check out past polls.

Notices?