Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: (tye)Re: (Golf) Nearest Neighbors

by tilly (Archbishop)
on Apr 04, 2001 at 22:45 UTC ( #69794=note: print w/replies, xml ) Need Help??

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

print nn(1, 4, 7);
returns 2 elements that are not in the input list.


print nn(1, 5, 7); print nn2(1, 5, 7); # Hmmmm print nn(1, 5, 11); print nn2(1, 5, 11);
after your first update all result in 51. Care to try again? :-)

Replies are listed 'Best First'.
(tye)Re2: (Golf) Nearest Neighbors
by tye (Sage) on Apr 04, 2001 at 23:20 UTC

    Just following the (ambiguous) specification. Are you looking for numbers from (5,11) that are close to 1 or numbers from (1,5) that are close to 11? I didn't find an API spec and found others using pop so I went ahead with the 2-character savings.

    Or am I only supposed to return one number if the "two closest" are both on "the same side" of the search-for number? That wasn't clear to me either so I just went with "return the two closest" without trying to assume a bunch of extra subtle meaning to that phrase. No, I'm not going to produce a version that sometimes returns only one number. (:

            - tye (but my friends call me "Tye")
      I think the "search-for" number is a misunderstanding on your part. We are not looking for the number that is closest to the first. We are looking for the pair of numbers, out of all n choose 2 pairs, which are closest together.

      So given (1, 5, 7) it would return (5, 7) (or (7, 5)) while (1, 5, 11) would return (1, 5). And you cannot assume that it is presented in increasing order.

      Any solution which returns a pair of numbers that are in the list and represent a minimal distance from each other with respect to all other possible pairings is correct. We are comparing the distance between all possible number pairings, and returning a minimal one. So the following are all correct:
      nn(1,5,9,15) returns (1,5) # or nn(1,5,9,15) returns (5,9) # or nn(1,5,9,15) returns (9,5)
      I don't really understand the beginning of your question though.
                     s aamecha.s a..a\u$&owag.print

        Ah! That's different!

        The specification is simple: given a list of numbers, return the two which are nearest to one-another

        I didn't parse the "one-" part (in my lame defense, my current window width wrapped the line right after the "-") so I was thinking you wanted the two numbers from a list closest to some other number not on the list.

        So just ignore me. (:

                - tye (but my friends call me "Tye")

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://69794]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (6)
As of 2018-06-21 06:42 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (117 votes). Check out past polls.