First, can you guess what the following code does before running it? ...
1x~@;

This node by shmem gave me the idea, and may give you a hint as well.

Now for the challenge ... what's the shortest program which does the same thing?  My guess is the obvious:

How about the smallest program that does the same thing slowly?  The following takes about 11 seconds on my laptop:

I have no idea if a shorter such program exists.


s''(q.S:$/9=(T1';s;(..)(..);$..=substr+crypt($1,$2),2,3;eg;print$..$/

Replies are listed 'Best First'.
Re: Guess what it does ... and a challenge
by blokhead (Monsignor) on May 24, 2008 at 19:36 UTC
    I parsed that code correctly in my head, but didn't realize what the result would be.

    Here is a program of the same length (as your second snippet) that does the same thing slowly:

    blokhead

        No, it won't. Now, if you do $_='a' first, then it will, and extremely slowly too.

        - tye        

Re: Guess what it does ... and a challenge
by kyle (Abbot) on May 24, 2008 at 20:04 UTC
Re: Guess what it does ... and a challenge
by ambrus (Abbot) on May 25, 2008 at 11:40 UTC
Re: Guess what it does ... and a challenge
by shmem (Chancellor) on May 24, 2008 at 22:53 UTC
    First, can you guess what the following code does before running it?

    Oh yes...

    it allocates an insane amount of memory, which I don't have - therefore, I won't run it ;-)

    --shmem

    _($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                                  /\_¯/(q    /
    ----------------------------  \__(m.====·.(_("always off the crowd"))."·
    ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}
golf! (now this title is more than one word)
by locked_user mtve (Deacon) on May 31, 2008 at 18:59 UTC
Re: Guess what it does ... and a challenge
by ambrus (Abbot) on May 25, 2008 at 11:54 UTC

    This does it slowly and is one character shorter than the one you gave in your spoiler:

    Update: Btw one could try this (CAUTION! DON'T TYPE BLINDLY!):

    but it doesn't work, because
    it fills up your disk instead. With GNU Coreutils, you can use the TMPDIR env-var to override where it puts its temporary files. Eg.
    [am]king ~$ TMPDIR=/dev/shm/ time perl -we '`yes|tac`' tac: /dev/shm//tacck0ml6: write error: No space left on device 11.48user 2.56system 0:14.05elapsed 99%CPU (0avgtext+0avgdata 0maxresi +dent)k 0inputs+0outputs (0major+1382minor)pagefaults 0swaps

    Update: On the other hand, this works, and is shorter than the first one:

    Update: the following works too and is even shorter:

    Update: and one more character shorter is:

    Update: the following has the same length as the first one in this node, but is a slower than that: