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
$_=' ` ` ````` ```` ` `` `` ``` ` ``` ```` ` ```` `` `` ``` `` `
` ``` ` `` ` ```` ```` ` ``` ` ```` ` `` ` ` ` ` ` ````` ` ``` ``
` `` `` `` ` ``` ` ``` ` ` ``` ````` ``` ` ` ``` ````` `` ` `
` ``` ` ``` ` ` `` ``` ` ` ``` ` ` ` ` ``` ````` ````` ` ``` `
` ` ` `````` ````` ```` ` ``` `` `` ` ``` ````` ` ` ` ` `` `
` `` ` ` ` `` ` ` `` ` ` ` `` ` ` `` ` ` ` `````` `` `` `` `
``` `````` ```` ````` ` ``` ` ` `` ``` ` ` ` ``` ` ` ` ` ````
` `` ` ` ` ` ` ` ` ` ` `.`` `` ,; ` ````` ``` `` ` ` ` ` ` `
```` ``````` ``` `` ` `` ` . ` ` .>bx!.,:;!|;.,`` ` ` `` ````` ```
`` ` ` ``` ` ```` ` ` ` ,.., ` ``:!ob)Fp>;,``` !:` ` ` `` ``````` `
`` ` ` ` ``` ` `````,!|:;. ``,,.;o!` ` ``` ` ```` `
`` ``````` ` `` ` ` ` ;!<pEFMWo` .. .x<` ` ` ` ` ```` ` `
` ` ` ``` ` ` `:xoxbpxoxpo<:,`` ` .<(WM@#F:`:<>:.x;` ``` `` ` ` ` `
`` ```` ` ` ` ``` ;p)()(WWE)pbo>; ` ` `,| ` `` ` `` ` ```
`` ` ` ` ` ` ` ` `|(WM@@WWMW()o<:;,`````,|obp(b(>.|(WWMp))` ```` ` `````
`` ` ` ` ` ` ` ;pM#@@@@#WF)bo>>!:.. `.;|>>:.,;:<>x>!x>;|(#@#@#)Mx ` ``` ` ` `
` `` ` ` `` ` ``` )W#@#@####@MMWEEFE)()x|;.;|>!.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@@##@##@#@###@#Exxb(###@##@#<`` ` `
`` ` ` `)####@#@#@##@#@b>.,.`` ``` ` ` ,:!:>obo<|oobFFEFF(WM)(pxx@##@##@W` ` ` ` `
` ` ` ```,@@##@#@##@#Wb>>!|:.,..` ,. `;!o(W@@W)x>>o(F)xoE#@##@## ` ````
``` ``` )#@@@##@@#@Mpoppboo<>!:,.`.``;|:!!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(>,;<<:!;:;;.,.:...,|###@###WE)((o|::|:!|p@EFx;,!>|!;;;,:,`..,,.!>obEp><#. ` `
` `` ` `` ` .#@##@#@WFpo>:;|;;.:<)MMFx!.;>!!::,...,..,.,!|xpb><>!|;,:;,:|(EMEb<.;|<|:;....,` .,;:!xb>|!>b ``` ```
```` `````` `` ` (@@#@##Wpx>;:;,..;:;)EWM(>:;;>!!::;,,,``...,|ob||!>:` ` `
` ` `` `` ` ``@@@#@#Wp<|;,...,.,|bEMM)<,.:|<|!;:;,,....;;!op|::>,` ` `
```` ` ` ` `@#@@@#M(>!;...,.,,;bMMW(>.`,:!;;!>!,,.:;|<:x| `` `
` `` ``` `` `` ```,#@##@#Eo<|:.,,,,.<)MEMEo|:!x)Eo>|!xo|;;:!<>>pM)(, ` ````
` ` `` ``` ` ```E@##W@Mp<||;,,,,.oEE(M##FpxbpEb>|!xxo|||!<>
@MWE@#Fx<|;,,..:bWMW@#@W()bx>>|!;|<<>>!;><
;;.,.;x(FEM@MF))<:|><|::,:><::<|>oE#@#(`` ` ``
`` ` ``` ` ` `pFEFE#W(o>|!:.;;>oxp()o>!;;;:!|:|!.:;|.:>!>x(@###)!` `
``` `` ``` `` ```,MWME@WM(x>||!||!><!::.,,:!|||;|xo##@@#M`` `
` ` `` ` ``` `M##@MM)bo<><||<|:,.;;:;|px@@@@#@``` ```
` ` ` ``` ` ``:#@###E)p><;.|ooxoo>!|!:;|p(WEb|:,``.<<;>px(@#@#, ` `` `
` ` ````` ` ` ``` `,:)MEEb!p>|op)(E)((())((()p>!:.. `,>|!ox>E@@#,`` `` `
` ` `` ` ` ` ````` :MWM(><:.<)M#M@MEbx<>:!!>!,..,`,;>|
!(@@( ` ``
` ` ` ` ` `` ` `````FWMEb!:..;!;;.`:!|::,, `,!|>oo!>oW#! ` `````
` ` ` ``` `` `` ` ` ``xo>|;:;:,.;;;.:;.,;!|;;>>#@x` ` `
` ` ` ` ` ` ` `` ` p#WWx|,,||<>>x|:|!.>#@M.` ` `
``` `` ` ` ` ``` ` ``` ` )@WMo,;!|>><||!!|;;;,.,.,,.:!!><<::!.`,F#@#!` ```
`` ``` `` `` ``` ` ` ` .W#WE<.!><<x;::, ` <@##@<```
` ``` ` ``` `` ` `` ` `;W#M(>><<<>!;:;;:::,.,,:.;!|<>>.,.`` o#@#@#E ``
` ` ` ` ` `` ` ` ` `` `!M#W)<!:;;::;;.,,..;:|<<>:, ` `E#@##@@@,
` `` ` `` ` `` ``` ` `` ```<#@Ebxox>|!;:;:::,,.:;;|!>>>,``` ``.#@@#@@##@F
``` ` ` ` ` ` ` ``` `` oM@(boo><|::;:.,...,;||>!:;,:::||>xpx; ` ```E@#@@###@##@@
` ` ` `` ` `` ` ` `.(##@#Mx)##E)x<|!!|!!!|<>:;` :(@##@@W!@#@@###@
``` ` ` `` ` `` !F##@##@###@#@x;!!|,` ` ``>##@@).`>#@@@#@##
`` ` `` ` ` .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 liverpole
($w=~/[\@WF)bo>|:.`]/)and$y+=$x;$x>>=1;}$y and$v.=chr($y)}eval$v#March 25,2006
Happy Birthday!
Nice job on your obfu, very clever!
Sweetblood
Opening in gvim shows breaks in strings etc which help see some of it but it's not all there yet.
I *thought* that xoxo was a little unusual ... :)
perlmonks.org content © perlmonks.org and Anonymous Monk, liverpole, sweetblood, tweetiepooh, wulvrine
prlmnks.org © 2006 edmund von der burg (eccles & toad)
v 0.03