On Friday 09 September 2005 10:15, Terje Kristensen wrote:
> Yep, your eyes does not deceive you. We have actually started a new golf
> here at http://terje2.perlgolf.org
>
> I hope there still is some perl golfers out there itching for a new
> challenge.
>
> The task this time is called "beads".
>
> Terje and Mtve

Thanks for the new golf!

In any case, there's an exploitable "feature" in the count sub-routine in the 
testsuite:

<<<
sub count {
    my ($hole, $tie) = @_;
    local $_ = slurp($props{$hole}{work}, $binary);
    if (/^\#!/) {
        s/^\#![\t ]?\S+// && s/\n//;
    }
    s/\s*\z//;              <--------
    my $md5     = md5_hex($_);
    my $score   = length;
    my $normal  = $score ? y/ -~\t\n// / $score : 1;
    if (defined($tie)) {
        defined(my $code = $tie_map{lc($tie)}) ||
            die "Unknown tie function $tie\n";
        $score += $code->($_, $score)/$nr_ties if $score;
        $ties++;
    }
    return ($score, $md5, $normal*100);
}

>>>

What happens is that trailing whitespace is removed. But one can use it to 
encode the entire program, no matter how long it is, and get a 25 characters 
solution. Like this:

<<<
#!/usr/bin/perl

use strict;
use warnings;

use IO::All;

my @code = io("beads.pl")->getlines();

my $bleach = join("", unpack("b*", ";$code[1]"));
$bleach =~ s!0! !g;
$bleach =~ s!1!\t!g;

io("bleach/beads.pl")->print(
    qq{open 0;eval pack"ab*",<0>\n$bleach}
);
>>>

This is not my original idea: Piotr Fusik used it for his solution in the last 
kernelpanic.pl Perl golf.

But I suggest issuing a new beadstest.pl file so that people won't all submit 
25-characters solutions and this would be more of a real golf. It should be 
noted in the subsequent golfs as well.

Regards,

        Shlomi Fish (who would now be working hard on optimizing his relatively 
long 
solution)

---------------------------------------------------------------------
Shlomi Fish      [EMAIL PROTECTED]
Homepage:        http://www.shlomifish.org/

95% of the programmers consider 95% of the code they did not write, in the
bottom 5%.

Reply via email to