http://www.perlmonks.org?node_id=83272


in reply to PGA Golf, Round 1

My submissions:

Hole 1 (16 characters)
sub f{ (pop=~/w+/g)[4] }
Hole 2 (31 characters) perl -e# -e# -e# -e# -egoto+TPC Hole 3 (46 characters)
If only alphanumeric data will be processed:
sub f{ $p=$_=pop;1while(!/^($p){2,}$/&&$p=~s/.$//);$p }
If required to support non-alpha, or unusual characters in the input data (requires \Q...\E), then 51 characters:
sub f{ $p=$_=pop;1while(!/^(\Q$p\E){2,}$/&&$p=~s/.$//s);$p }
Hole 4 (24 characters)
sub f{ map{chr hex$_}pop=~/../g }
Hole 5 (30 characters)
sub f{ $x=pop;map{$_>$x?$x=$_:0}@_;$x }
Hole 6 (39 characters)
sub f{ grep{s/.//}sort map{/[aeiou]/;"$&$_"}@_ }
Update:
Corrected hole 4 (returned string, wanted list).
Reduced hole 6 (@x=@_ to @_, used $& instead of memorizing)
Removed first 'version' of hole #5, which didn't handle negative numbers, leaving the longer second version.