Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

ACA JAPH

by goibhniu (Hermit)
on Aug 18, 2007 at 09:28 UTC ( [id://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.

Replies are listed 'Best First'.
Re: ACA JAPH
by eyepopslikeamosquito (Archbishop) 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):

    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.

    # @ca - code array # @kp - key phrase # $c - caesar shift (big hint here) # %p2 - short for p2C - plaintext to CIPHERTEXT hash # %C2 - short for C2p - CIPHERTEXT to plaintext hash # $k - key (one letter of the key alphabet) # $t - text # $h - hash reference # $r - result

    ok, here's what I'm doing:


    I humbly seek wisdom.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
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?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2024-04-20 16:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found