Beefy Boxes and Bandwidth Generously Provided by pair Networks BBQ
No such thing as a small change
 
PerlMonks  

Re^2: Counting positive numbers

by Young Monk (Novice)
on Jul 03, 2010 at 16:56 UTC ( #847915=note: print w/ replies, xml ) Need Help??

Comment on Re^2: Counting positive numbers
Re^3: Counting positive numbers
by BrowserUk (Pope) on Jul 03, 2010 at 17:34 UTC

    I don't believe it!

Re^3: Counting positive numbers
by eyepopslikeamosquito (Canon) on Jul 03, 2010 at 22:54 UTC

    I don't believe it can be done "legitimately" in six strokes. Only by "cheating". I have no experience of spoj competitions, but it looks like solutions are accepted automatically by a robot referee (i.e. without a human checking each submitted solution for correctness). With this sort of automated judging, part of the game (lamentably IMHO) is finding a way to trick the robot into accepting an invalid solution. In the past, cheating has been common at codegolf sites with automated judging. For example:

    In your spoj game, one (bizarre) rule that may be exploitable is:

    Score equals to size of source code of your program except symbols with ASCII code <= 32.
    Why on earth would they make such an arbitrary rule? This is not true golf IMHO. It's also possible there are bugs in their robot referee or test program for this particular game (e.g. a poor or very small set of fixed test data) which may be exploited. But, to me, this sort of activity is not really golf anymore; it's more akin to finding exploits to hack into web sites.

      After a little googling, i found that those top scoring guys have actually exploiting the "<33 ASCII not counted as character" condition to get a very high(low, actually) score...!

      Take a look

      Im wondering, how can u compress a perl program into characters with ASCII <33 such tat the latter still works???

        Most likely this is a golfed version of Acme::Bleach. But doing something like that in 6 characters still seems hard...

        It seems to me you'll need to invent an encoding scheme and build the required "normal" program string from a string consisting of characters in the ord range 0-32 ... then use Perl's eval function (or perhaps s///ee) to evaluate it.

        This looks like a tricky problem to me, especially for a Perl novice. Many approaches are possible. One way to get started is to use the s/// and the y/// operators with a delimiter less than ord(32) like so:

        s^Z^Z^A^B^C^D^E^F^G^H^Z; y^Z^A^B^C^D^E^F^G^H^Za-z^Z; print
        where ^A to ^Z above are CTRL-A to CTRL-Z (i.e. chars with ord 1..26). Running the little test program above produces:
        abcdefgh
        You may be able to extend this scheme to produce whatever 30 or so characters are required by a "normal" (unencoded) solution. Having generated the required program string, you could replace the print above with eval. That would seem to yield a solution of around 11 "characters" in length. If you start down this road, you may find further inspiration as you try out ideas.

        Some old nodes from mtve might provide further ideas you could try:

Log In?
Username:
Password:

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

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

    April first is:







    Results (440 votes), past polls