Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: A curses-based JAPH

by sgifford (Prior)
on Dec 11, 2004 at 06:30 UTC ( #414070=note: print w/replies, xml ) Need Help??


in reply to A curses-based JAPH

IMHO, a JAPH should be short enough to fit in an email sig. Here's my attempt to compress and obfuscate your code:
use Curses;use integer;@S=split(//,'Just Another Perl Hacker,'); initscr;$C=(COLS()-@S)/2;%j=map{(LINES()/2)."/$_"=>1}($C..$C+@S-1); $x=mr(0..LINES()-1);$y=mr(0..COLS()-1);$l=mr(32..126); while(my($x,$y,$l)=(&$x,&$y,(keys%r==@S)?' ':chr(&$l))){ if($j{"$x/$y"}){next if($r{$y});$r{$y}++ if($S[$y-$C] eq $l)} addch($x,$y,$l);refresh;}sub mr{my@a=@_;sub{$a[rand @a]}}

I couldn't get it down to 4 lines, but who's picky about USENET .sig files anymore anyways? :)

Update: Turns out I'm still picky about USENET .sig files. This can be formatted into 4 80-column lines; it's formatted as 5 70-column lines here because otherwise PM wraps it into unreadability.

use Curses;@S=split(//,'Just Another Perl Hacker,');initscr;$C=int(( &COLS-@S)/2);%j=map{int(&LINES/2)."/$_"=>1}($C..$C+@S-1);($X,$Y,$L)= map{my$n=$_;sub{int rand $n}}(&LINES,&COLS,95);while(($x,$y,$l)=(&$X, &$Y,chr(32+(keys%r==@S?0:&$L)))){if($j{"$x/$y"}){next if($r{$y}); $r{$y}++if($S[$y-$C] eq $l)}addch($x,$y,$l);refresh}

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (5)
As of 2020-01-25 19:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?