Beefy Boxes and Bandwidth Generously Provided by pair Networks vroom
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

ACA JAPH

by goibhniu (Hermit)
on Aug 18, 2007 at 09:28 UTC ( #633452=obfuscated: print w/ replies, xml ) Need Help??

Ok, this is my first japh. I haven't got it down to four lines, but 5 is almost 4 for really small values of 5.

If you don't want clues, don't look up the ACA. I put it in the title because I wanted it to be more personal than "My first JAPH", but I didn't want to put too much in the title for those who have fun with de-obfuscating.

@ca=(sub{@kp=split(//,shift);$c=shift;$p2{' '}=' ';$C2{' '}=' ';foreac +h(@kp, 'a'..'z'){if(!exists $p2{$_}){$k=chr(ord('A')+(($a++)+$c)%26);$p2{$_}= +$k; $C2{$k}=$_;}}},sub{$t=shift;$h=shift;foreach(split(//,$t)){$r=$r.($$h{ +$_});} return $r;});$ca[0]->('thequickbrownfoxjumpsoverthelazydogs',10);print + $ca[1]->('ZOCK FWUKLMT BMTE LFQR',\%C2)."\n";


I humbly seek wisdom.

Comment on ACA JAPH
Download Code
Re: ACA JAPH
by eyepopslikeamosquito (Canon) on Aug 18, 2007 at 12:07 UTC

    Without understanding what your code does, I whittled 100 strokes off its length by performing some routine golfic shortenings:

    @z=(sub{$c=pop;$x{$"}=$C{$"}=$";$x{$_}or$x{$C{$k}=$_}=$k=chr ord(A)+($a+++$c)%26for pop=~/./g,a..z},sub{$h=pop;$r.=$$h{$_}for pop=~/./g;$r});$z[0]->(thequickbrownfoxjumpsoverthelazydogs,10); print$z[1]->('ZOCK FWUKLMT BMTE LFQR',\%C).$/
    Fits in a 4-line sig now. :-)

    Update: whittled a further 10 strokes.

      Wonderful. Is there a "routine golf shortenings" node?


      I humbly seek wisdom.

        <shameless plug>
        There's a number of tips and techniques listed in Perl Golf 101 as well as in the comments to that node.
        </shameless plug>


        --chargrill
        s**lil*; $*=join'',sort split q**; s;.*;grr; &&s+(.(.)).+$2$1+; $; = qq-$_-;s,.*,ahc,;$,.=chop for split q,,,reverse;print for($,,$;,$*,$/)
Re: ACA JAPH (hints)
by goibhniu (Hermit) on Aug 22, 2007 at 14:08 UTC

    My first clue is to explain ACA in the post. It's probably not very helpful; just a nudge in a direction. Here's the link:

    My next clue is somethign most here could do themselves, but I just learned it this week (from reading PerlMonks!). Here's the perl -MO=Deparse output (this is without eyepopslikeamosquito's reduction):

    @ca = (sub { @kp = split(//, shift @_, 0); $c = shift @_; $p2{' '} = ' '; $C2{' '} = ' '; foreach $_ (@kp, ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' +, 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x +', 'y', 'z')) { if (not exists $p2{$_}) { $k = chr 65 + ($a++ + $c) % 26; $p2{$_} = $k; $C2{$k} = $_; } } } , sub { $t = shift @_; $h = shift @_; foreach $_ (split(//, $t, 0)) { $r = $r . $$h{$_}; } return $r; } ); $ca[0]->('thequickbrownfoxjumpsoverthelazydogs', 10); print $ca[1]->('ZOCK FWUKLMT BMTE LFQR', \%C2) . "\n";

    My next clue is to comment my variables. This is a big leap and probably a give away. I wish I had better intermediate clues for ya.

    ok, here's what I'm doing:


    I humbly seek wisdom.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (14)
As of 2014-04-16 16:15 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (432 votes), past polls