AW: bad code to good golf

Winter Christian <[email protected]> Thu, 13 Dec 2007 17:47:40 +0100
Newsgroups gmane.comp.lang.perl.fun
Message-ID <[email protected]>
A. Pagaltzis wrote
>* Marcus Holland-Moritz <[email protected]> [2007-12-09 21:20]:
>> We're all stuck at 21. :-)
>
> Well, `bless`, `shift` or `$_[0]`, `{}`, `@_`, and one comma are
> all inevitable. That's 15 characters in fixed strings alone. Then
> you'll also need to rearrange list or evaluation order somewhere,
> which means at least one pair of delimiters with two indices and
> a separator inside, so that's another 5 tokens that can't be any
> shorter than 1 character.
>
> Therefore no possible solution to this problem can be any shorter
> than 20 characters under any circumstances.
>
> Besides the solutions already posted, I found a couple of ways to
> write it in 22 characters, plus two more ways to do it in 21
> characters, one of should work but doesn't because of that stupid
> prototype that `bless` has.
>
> But I didn't manage to beat 21 characters, probably because it's
> not possible. Beating 20 would certainly be impossible.

To me the following seventeen seems acceptable, at least as long
as there's certainty that the "abused" additional key/value pair
doesn't clash with class functionality, and it even circumvents
the evaluation order thingy:

sub new{bless{0,@_},$_[0]}

-Chris

COC AG, Marktler Strasse 50, 84489 Burghausen,  Deutschland,  Amtsgericht Traunstein, HRB 17218,  USt-ID-Nr. DE 251 388 010
Vorstand: Ralf Schuster (Vorstandsvorsitzender), Andreas Bublak, Renate Linhart, Aufsichtsratsvorsitzender: Günter W. Engerer

COC AG, Marktler Strasse 50, 84489 Burghausen, Germany, Commercial Registry Traunstein, HRB 17218, VAT Reg.No. DE 251 388 010
Managing Board: Ralf Schuster (CEO), Andreas Bublak, Renate Linhart, Chairman of the Supervisory Board: Günter W. Engerer