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


in reply to Re: (Golf) Nearest Neighbors
in thread (Golf) Nearest Neighbors

Very nice! Sniping one character gives:
sub nn { @_=sort{$a<=>$b}@_; $_[1]-$_[0]>$_[$_]-$_[$_-1]and@_[0,1]=@_[$_,$_-1]for 2..$#_; @_[0,1] }
The number to beat is 86...
   MeowChow                                   
               s aamecha.s a..a\u$&owag.print

Replies are listed 'Best First'.
Re: Re: Re: (Golf) Nearest Neighbors
by satchboost (Scribe) on Apr 05, 2001 at 00:23 UTC
    This doesn't deal with duplicates. If you want to deal with duplicates, I think you change it to:
    sub nn { @_{@_}=0;@_=sort{$a<=>$b}keys%_; $_[1]-$_[0]>$_[$_]-$_[$_-1]and@_[0,1]=@_[$_,$_-1]for 2..$#_; @_[0,1] }

    That brings the total from 86 to 99. I'm not sure if the spec requires that duplicates be treated as one element or separate elements.