develooper Front page | perl.golf | Postings from September 2004

Puzzle: Warnings Golf

Thread Next
From:
McGlinchy, Alistair
Date:
September 1, 2004 12:34
Subject:
Puzzle: Warnings Golf
Message ID:
8B653E54B22CC741B9D5AF5FD15126FC0FFF9E@MSHVSMNSEXP0002.mnsexchange.adroot.marksandspencer.com
Golfers,

This list has been a tad quiet for a while so I thought I'd throw in a golfy puzzle.

For some reason the keys on my keyboard temporarily rearranged themselves today and a quick one-liner I was writing didn't do what I expected; in fact it did nothing at all. So I added a -w flag and I got 4 separate warnings. I thought, 4 warnings ain't good enough, I wanted more!

In a few minutes I had a 9 byte one liner that produced 7 distinct warnings when run with -w but did nothing without -w. That's 0.77 warnings per byte of code, not bad but I'm sure there's more to be found.  Sure a simple perl -we 'a' gives two warnings for one byte, but that seams a little too trivial.  

Puzzle: Write a one-liner longer than (say) 3 bytes that can improve on 0.77 distinct warnings per byte of code. The program should be -c valid, output nothing without -w and sound the alarm as much as possible with -w.

For those who like sand-traps, I suggest you shouldn't count multiple messages that give the same warning for different quoted strings. For example  perl -we "a,b" gives four warnings (1.3/byte) but only scores two distinct ones (0.66/byte). Nor can you count the same warning on multiple lines of input.  The following will hopefully give a true distinct warnings score.
	perl -we 'yourcode'  2>&1 | perl -ne 's/\042.*\042//;s/at -e.*$//;$x{$_}++;END{print 0+keys%x}' 

Cheers,

Alistair

PS please excuse the \042 in the regex I was chopping between Cygwin and cmd.exe and " in cmd is a complete #£&^%$^!
__SPOILER__GAP__  








































__

D:\>perl -ce "%$A==$@,z"
-e syntax OK

D:\>perl -e "%$A==$@,z"

D:\>perl -we "%$A==$@,z"
Unquoted string "z" may clash with future reserved word at -e line 1.
Useless use of numeric eq (==) in void context at -e line 1.
Useless use of a constant in void context at -e line 1.
Name "main::A" used only once: possible typo at -e line 1.
Use of uninitialized value in hash dereference at -e line 1.
Argument "" isn't numeric in numeric eq (==) at -e line 1.
Use of uninitialized value in numeric eq (==) at -e line 1.

D:\>


-----------------------------------------------------------------------


Registered Office:
Marks and Spencer plc
Waterside House
35 North Wharf Road
London
W2 1NW

Registered No. 214436 in England and Wales.

Telephone (020) 7935 4422
Facsimile (020) 7487 2670

www.marksandspencer.com

Please note that electronic mail may be monitored.

This e-mail is confidential. If you received it by mistake, please let us know and then delete it from your system; you should not copy, disclose, or distribute its contents to anyone nor act in reliance on this e-mail, as this is prohibited and may be unlawful.

The registered office of Marks and Spencer Financial Services PLC, Marks and Spencer Unit Trust Management Limited, Marks and Spencer Life Assurance Limited and Marks and Spencer Savings and Investments Limited is Kings Meadow, Chester, CH99 9FB. These firms are authorised and regulated by the Financial Services Authority. 


Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About