http://qs321.pair.com?node_id=594714


in reply to Dueling Flamingos: The Story of the Fonality Christmas Golf Challenge

Just a couple of updates from the post mortem at golf@perl.org.

It's surprisingly easy, when "golfing fatigue" sets in towards the end of a long and gruelling tournament, to resemble Mr Magoo.

So it proved here in the gripping Battle of the Last T-Shirt, where `/anick might have grasped the precious last shirt, simply by changing =~/$&/ to =~$&. Of course, m.wrenn may well then have thrillingly re-snatched the prized garment with the routine transform of:

qw(IV XL CD V L D IX XC CM X C M)
to:
(IV,XL,CD,V,L,D,IX,XC,CM,X,C,M)

With the recent completion of PPI and Perl::Critic, it should now be feasible to write a module that detects and prevents many common golfic oversights, such as the two cited above. You might implement this as a collection of Perl::Critic policies. A more sophisticated Games::Golf::MrMagoo module might even automatically try each possible shortening against the test program and only report those that pass.

Oh, and Util's hash-based approach has now been whittled from 129.50 all the way down to 114.47:

#!perl -pl @%{@;}=0..map+s!.!y$IVCXL426(-:$XLMCDIVX$dfor$;[$_].=5x$&*8%29628!eg,! +y/m/-/..3999;s/\w+/+$%{$&}/g;$_=$;[eval]
So it seems that hashes are clearly the second best lookup technique after symbolic references.