Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask


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.

Replies are listed 'Best First'.
by eyepopslikeamosquito (Bishop) 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>

        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.

    # @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?

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (2)
As of 2023-01-30 04:05 GMT
Find Nodes?
    Voting Booth?

    No recent polls found