http://www.perlmonks.org?node_id=214014


in reply to Mission: Obfuscation (1)

I'm just going to voice a thought theorbtwo brought p but that I agreed with. How about not making the specific algorithm be mandatory - leave the implementation up to the writer. You only need to verify the result.

__SIG__ use B; printf "You are here %08x\n", unpack "L!", unpack "P4", pack "L!", B::svref_2object(sub{})->OUTSIDE;

Replies are listed 'Best First'.
Re: Re: Mission: Obfuscation (1)
by jynx (Priest) on Nov 19, 2002 at 12:07 UTC

    Yeah, the problem is that some algorithms will automatically make it harder to read. By standardizing the algorithm people can't do something completely out there and gain an advantage there. In golf the advantage is all about finding the shortest algorithm and then use arcane knowledge to save strokes. Since algorithms are generally known for golf contests most of the solution lies in using more arcane knowledge.

    *sigh* i suppose my issue is that an obfuscation must start with an interesting algorithm. Just finding primes isn't interesting (and in fact there is no one right way to do it) but having a prime generator (albeit incomplete) is a bit interesting. This gives people not so good at obfuscation a chance because all that needs be obfuscated is the window dressing. It's more a way to see who can provide the most interesting window dressing, which is (imho) the smaller and more difficult part of obfuscation.

    So essentially i posted this:

    1. Because i can't recall having seen one before
    2. Because (again imho) many people need to work on their window dressing, and this is an excuse to have them try just for fun.
    Sorry if it's not as interesting, but i did have specific intentions. If i can think of a problem that has very few solutions than i might allow indeterminate algorithms to be used, but until then levelling the playing field for neophites is a goal i aspire for.

    jynx

    PS Also, the result is harder to verify if any algorithm is used (not necessarily here, but in the general case)...

    update: PS2: i did try to make the algorithm more general so that (hopefully many) liberties could be taken, and there are some things in the algorithm that can also be taken by principle rather than letter (one need not start at 3 for example. one could start at 1 or 2 just as easily so long as the output is correct). Unfortunately --as always -- my attempt to put thoughts to words is poor at best...