http://www.perlmonks.org?node_id=539324

I wrote this as a tribute to my younger brother, who unfortunately passed away when he was only 23.

Yesterday was his birthday; he would have been 39 years old.

Of course I can't be certain, but I suspect he would have liked Perl.  He always had the kind of mind that enjoyed mathematics, puzzles, and games, and I'm quite sure that he would have gotten a kick out of programs like this.

The program is similar in appearance to Latent Japh and Japhy New Year, but uses a completely new trick, which, by its nature, does a better job of "randomizing" the ascii output.  Can you figure out how it works?

Update:  On Windows, the module "Win32::CONSOLE::ANSI" is required.  On Linux, you'll need to run it with "perl <program>", since it doesn't have the shebang line.

$_=' ` ` ````` ```` ` `` `` ``` ` ``` ```` ` ```` `` `` ``` +`` ` ` ``` ` `` ` ```` ```` ` ``` ` ```` ` `` ` ` ` ` ` ````` ` + ``` `` ` `` `` `` ` ``` ` ``` ` ` ``` ````` ``` ` ` ``` ````` `` + ` ` ` ``` ` ``` ` ` `` ``` ` ` ``` ` ` ` ` ``` ````` ````` ` +``` ` ` ` ` `````` ````` ```` ` ``` `` `` ` ``` ````` ` ` ` +` `` ` ` `` ` ` ` `` ` ` `` ` ` ` `` ` ` `` ` ` ` `````` `` `` +`` ` ``` `````` ```` ````` ` ``` ` ` `` ``` ` ` ` ``` ` ` ` + ` ```` ` `` ` ` ` ` ` ` ` ` ` `.`` `` ,; ` ````` ``` `` ` ` ` + ` ` ` ```` ``````` ``` `` ` `` ` . ` ` .>bx!.,:;!|;.,`` ` ` `` ````` + ``` `` ` ` ``` ` ```` ` ` ` ,.., ` ``:!ob)Fp>;,``` !:` ` ` `` `` +````` ` `` ` ` ` ``` ` `````,!|:;. ``,,.;<bEF(!.````;>o!` ` ``` +` ```` ` `` ``````` ` `` ` ` ` ;!<o<!: ``` `,:<op(b<. `` .<o. ` `` `` + ``` `` ` ` ` ` `` ```` ` ` .<xoo><<!:,. ` `,..>pEFMWo` .. .x<` ` ` ` ` +```` ` ` ` ` ` ``` ` ` `:xoxbpxoxpo<:,`` ` .<(WM@#F:`:<>:.x;` ``` `` ` + ` ` ` `` ```` ` ` ` ``` ;p)()(WWE)pbo>; ` ` `,|<pFME)!,:pFp:<> ` `` ` `` + ` ``` `` ` ` ` ` ` ` ` `|(WM@@WWMW()o<:;,`````,|obp(b(>.|(WWMp))` ```` +` ````` `` ` ` ` ` ` ` ;pM#@@@@#WF)bo>>!:.. `.;|<oo<)o;|)@@#MFM) ````` +` ` ` ` ` ` ` ` ` ` `.oM#@#@##@MWE)pxxo>>>:.,;:<>x>!x>;|(#@#@#)Mx ` ``` + ` ` ` ` `` ` ` `` ` ``` )W#@#@####@MMWEEFE)()x|;.;|><!!|!!)M#@#W#W@#<` ` ` + ```` ` ` ` ``` ` `` p##@#@#@##@#@###@WMF)p(bbxxo!:||;|b@#@WMEFW@@@. ` ` +` ` ` ` `` ` ` ` p@#@#@#@@@@#@@@@@@WMMF(WWMpox<<>!.x###@EM@EM#@@< ` ` + ` ` ` `` ` `` `` `` o@#@#@@###@@@##@#@@###M#F()xox<|<>!(#@@#WW#MW@##F,``` +``` `` `````` ` `` ` ##@##@###@@##@@#@#@##WMWM)poooopob>oW@@#MW#@@##@#( ` ` + ` ` `` ` ` ` >#@#@@#@#@@##@@#@@##@@#@#@M#W(b)F(b><)EMWEE@@@###@#>``` + ``````` ` ````` `` ``#@####@#@###@#@#@@@#@#@#@@@WWFE(((>|:pbFFE@@##@###@# ` + ` ` ` ` ```` ` ` `` `;@##@##@#@#@#@#@@@#@@#@##@#MWF)xxxo;..>>(WW@@@@@##@#@o`` +` `` `` ` ` ` ```(@@@#@#@#@@@@@@####@@@#@@@MWFp<><!;.,;>!x@#@#@@##@@@@M` +` `` ` ` ` ` ` `` ``@@@#@#@#@####@##@##@#@#@#@MWEo|!;,` ,:!;>E@#@@##@#@##@`` +``` ` ` ` ` ` `` ``@@#@#@@#####@#@@@##@@####MWW(<::,``` .:::o##@@@@@#@#@@` + ` ` ` ` ```:#@@#@#@####@##@##@@@##@#MWE)x!.,```` .:;;!###@#@@@@@#@.` + ````` ``` ` `` `x#@@@#@@@#@@@#@###@###@MWE)b>;;.` ` `.;::!)@@##@###@#@.` + `` ` `` `` ``` ` )##@###@##@@@#@@@####MMF)bx!;, ```` ``,;,;!xE@##@##@@@#;` + ``` `` ` ` ` ` ``F#@@@@#@@@@##@@@@#F(ppoo<|; ``` `` .`.,.,<>pE####@@@##; + ``` ``` ` `` `` ````F@@##@##@#@###@#Ex<!;::., ` ` ``...;.:!>xb(###@##@#<` +` ` ` `` ` ` `)####@#@#@##@#@b>.,.`` ``` ` ` ,:!:>obo<|oo<o)@@@#@@@b` + ` `` ` ``` `` ``<#@#@#@#@###M)x!:;;.,````` ` `,,:>bFFEFF(WM)(pxx@##@##@W` + ` ` ` ` ` ` ` ```,@@##@#@##@#Wb>>!|:.,..` ,. `;!o(W@@W)x>>o(F)xoE#@##@## +` ```` ``` ``` )#@@@##@@#@Mpoppboo<>!:,.`.``;<b)F)(>|:!!<xoboxp#@#@@@# +`` ` ` ``` `` ``````@@####@@@#MMW#@@@##@W(o<;:, .>opbpb(F))x>!|>xxxM@@@###` + ``` `` ` ` ``` `` @@@#@@@@#@@#@WFEM##@@W)x!,,`.|opbbF@@#MME>||xxoE@@#@##: +`` ``` ` `` ` `` `` `p##@#@#@@@##Fo<<>p)@#@W(o:,.;!>p)>oEMbxxx>|:!>>(@##@#@> +` ` ` ` ` ` ` `,@@@#@###@##b<>o(##@(#@EE>:,;!!><>!><:.:.;:;;>>bM@@@#@o +` ` ` ` ` ` ` ```@@#@#@#@##)p(WME@@F<)WEMb!.:||;|<!:,,.,,,.,;<>x)##W#@p +`` ` ` `` ` ` ` `)@@#@##@@Fxb@@(ob)<|<(MF(>,;<<:!;:;;.,.:...,|<op@E<b#x +` ``` ` ` ` ```` ` ` >###@###WE)((o|::|:!|p@EFx;,!>|!;;;,:,`..,,.!>obEp><#. + ` ` ` `` ` `` ` .#@##@#@WFpo>:;|;;.:<)MMFx!.;>!!::,...,..,.,!|xpb><<W + ` ` `` ```` ` ` ` ```#@#@#@@Wp>>!|;,:;,:|(EMEb<.;|<|:;....,` .,;:!xb>|!>b + ``` ``` ```` `````` `` ` (@@#@##Wpx>;:;,..;:;)EWM(>:;;>!!::;,,,``...,|ob||!>:` + ` ` ` ` `` `` ` ``@@@#@#Wp<|;,...,.,|bEMM)<,.:|<|!;:;,,....;;!op|::>,` + ` ` ```` ` ` ` `@#@@@#M(>!;...,.,,;bMMW(>.`,:<!|;;||,..,.::|<b:;<<` + `` ` `` ` ` ` ```M@@@###)x<|::,.,,,|)MWEp!..,:<>!;;!>!,,.:;|<<p>:x| +`` ` ` `` ``` `` `` ```,#@##@#Eo<|:.,,,,.<)MEMEo|:!x)Eo>|!xo|;;:!<>>pM)(, ` + ```` ` ` `` ``` ` ```E@##W@Mp<||;,,,,.oEE(M##FpxbpEb>|!xxo|||!<><p@@#|` +` ` `` ` `` ` `` ` >@MWE@#Fx<|;,,..:bWMW@#@W()bx>>|!;|<<>>!;><<p@@#(` +`` `` ` ` ``` `` `` ``` ` ,W)(EW#M)x>;;.,.;x(FEM@MF))<:|><|::,:><::<|>oE#@#(` +` ` `` `` ` ``` ` ` `pFEFE#W(o>|!:.;;>oxp()o>!;;;:!|:|!.:;|.:>!>x(@###) +!` ` ``` `` ``` `` ```,MWME@WM(x>||!||!><<oo>!::.,,:!|||<!;;.;>;|xo##@@# +M`` ` ` ` `` ` ``` `M##@MM)bo<><||<<xopx>|:,.;;:<p))x;,..!>;|px@@@@# +@``` ``` ` ` ` ``` ` ``:#@###E)p><;.|ooxoo>!|!:;|p(WEb|:,``.<<;>px(@#@# +, ` `` ` ` ` ````` ` ` ``` `,:)MEEb!p>|op)(E)((())((()p>!:.. `,>|!ox>E@@#, +`` `` ` ` ` `` ` ` ` ````` :MWM(><:.<)M#M@MEbx<>:!!>!,..,`,;>|<p>!(@@( +` `` ` ` ` ` ` `` ` `````FWMEb!:..;<o(px>!;;.`:!|::,, `,!|>oo!>oW#! +` ````` ` ` ` ``` `` `` ` ` ``<WWW)<:`,:|>xo>|;:;:,.;;;.:;.,;!|<x>;;>>#@x +` ` ` ` ` ` ` ` ` ` `` ` p#WWx|,,||<>><!;|:::;;,.::,..:<!>x|:|!.>#@ +M.` ` ` ``` `` ` ` ` ``` ` ``` ` )@WMo,;!|>><||!!|;;;,.,.,,.:!!><<::!.`,F# +@#!` ``` `` ``` `` `` ``` ` ` ` .W#WE<.!><<<!!!:;;;;.,.;.;:!;|>x;::, ` <@ +##@<``` ` ``` ` ``` `` ` `` ` `;W#M(>><<<>!;:;;:::,.,,:.;!|<>>.,.`` o# +@#@#E `` ` ` ` ` ` `` ` ` ` `` `!M#W)<<o<>!:;;::;;.,,..;:|<<>:, ` `E# +@##@@@, ` `` ` `` ` `` ``` ` `` ```<#@Ebxox>|!;:;:::,,.:;;|!>>>,``` ``.#@ +@#@@##@F ``` ` ` ` ` ` ` ``` `` oM@(boo><|::;:.,...,;||<oo;``` `b@# +@@##@@#@ `` ` ` `` ` `` ``` ``` `` ` F#W(bo<<!!:,.,,.,.::!><o<``` ``;@@# +#@#@@@@# `` ` `` `` ` ``` ` `` ` ``` ` #W#M)(x><!;;.,..;;;|<<b<, ` `` ,M@## +##@#@##@ ``` ``` ` ` ` ` ``` ``` ` `p@#EE@#Fbx>>!:;,:::||>xpx; ` ```E@#@@ +###@##@@ ` ` ` `` ` `` ` ` `.(##@#Mx)##E)x<|!!|!!!|<pbo!` ` `(@##@@ +@#@#@@## ` ``` ` ` ` ` ` ` ,(@###@@#o<E@@M(o<<><><oxppo|,` `` (@###@( +#@##@### `` ` ````` `` ``,)@####@@#@F!!E@#W((pbppb()b>:;` :(@##@@W! +@#@@###@ ``` ` ` `` ` `` !F##@##@###@#@x;<E@##MMWWWW(o<|;. ``o#@@@#E,| +##@@@#@# ` ` `` ``` ` ` ,xM##@##@#@#@####F!|<(##W@@#M)>!!|,` ` ``>##@@).`> +#@@@#@## `` ` `` ` ` .x##@@@#@@@###@##@@W!|!x(W@@WFx>!>>. ` ;..#@@): ) +#@#@@##@ ` `` ``````` ```:(###@#@####@#@##@#@@@;|;:x(W#Wbo<>o| ,|)E@@#)@@p`` .@ +#@@@#@@# ``` ` ``` ` o@@###@@@@###@@@#@###@@#!:!;:|xMM(oxx>oW#@#@####@|` ` |# +@@#@@@@@ `` `` ````;(#@@#@@@#@@#@@#@@#@@#@@#@M<>>>|;.|)M@EW#@##@#@@@#@@` `(# +#@#@###@ `` `` `,p@@@@@#@####@##@@@#@#@@###@##@@@#W(<>E##@#@##@#@###@@@. ` #@ +#@#@#@@# ``` .p##@##@##@###@##@@#@###@##@####@@@##@#@@@#@#@###@##@@@#@(`` ,#@ +##@@@#@# ` ,oW#@@@@#@@@###@##@@@@###@##@###@#@@###@#@@##@@@#@@####@@#@@ `,@@ +@@@@@### !W@#@@@@##@#@@@####@#@#@@@@@@@@####@@##@@##@##@###@#@@###@###;``|@# +@##@#@@# ` .M@###@@#####@@####@#@####@@@##@@##@#@#@@#@#@@@##@@#@#@@@@###@|` p@@ +##@#@#@@ )##@###@##@@##@####@@@#@#@#@#@@#@#@#@@#@@@#@@@##@@##@@#@#@@@#@| M## +#@#####@ `,#@#@@@##@@#@@#@#@#@@@##@#@@@##@##@##@#@#@#@@@#Wbo)#@#@#@###@@#` @@# +#@##@@## `p##@@#@##@###@#@####@###@##@#@####@@#####@##(oo .;!|>pEWMWMM(>` :##@ +@##@##@# `@@##@#@@@#@@#@#@#@@##@#@@@####@#@##@#@#@##@x,`` ` `.;.... ` ` `x@@@ +##@@@@@# ,@#@@@#@@#@@@##@##@@###@@@#@@#@#@#@##@#@##W! `` ` ` ` ``` `` (@#@ +@@@#@#@@ >#@@@##@#@@@#@@#@@@##@##@#@@#@#@#@@#@#@M@p,` ` ` ``` ```` ``` `@@## +@#@@@##@ x@@####@@@##@@##@#@@@@#@@@#@@@#@##@@Fbx|:` ` ` ` ` ``` `` ` ` |#@## +@@#@@@@# b#@@#####@#@@@##@@#####@@#@###@#@@#@;. ` ` ` `` ``` ````` ` `o##@# +@@@##@## F@#@@@@@@@@@#@######################, , E';s, +\n,,gxm; while(s&(.{7})&&){$x=64;$y=0;$z=$1;while($x){$z=~s-(.)--x;$w=$1;##by l +iverpole ($w=~/[\@WF)bo>|:.`]/)and$y+=$x;$x>>=1;}$y and$v.=chr($y)}eval$v#March + 25,2006

s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/

Replies are listed 'Best First'.
Re: Birthday tribute Japh
by sweetblood (Prior) on Mar 27, 2006 at 20:28 UTC
    I'm sure your brother would have appreciated your efforts. I lost my brother at the age of 25 he'd be 53 this month, it never feels right.

    Nice job on your obfu, very clever!

    Sweetblood

Re: Birthday tribute Japh
by wulvrine (Friar) on Mar 27, 2006 at 12:28 UTC
    Holy (#!curse!#) Now that is a hel..heck of a job!!

    Happy Birthday!

Re: Birthday Tribute Japh
by tweetiepooh (Hermit) on Mar 29, 2006 at 10:17 UTC
    That's very nice.

    Opening in gvim shows breaks in strings etc which help see some of it but it's not all there yet.

Re: Birthday Tribute Japh
by Anonymous Monk on Mar 30, 2006 at 21:01 UTC
    nice job xoxo
      I just talked to my 22-year old daughter, who is a junior at college, and had a very close relationship to her uncle.  She told me it was she who wrote the above message!

      I *thought* that xoxo was a little unusual ... :)


      s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/