good chemistry is complicated,and a little bit messy -LW PerlMonks

### 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

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

UPDATE

```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.
```   MeowChow
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")

Create A New User
Node Status?
node history
Node Type: note [id://69794]
help
Chatterbox?
and a kettle whistles...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (13)
As of 2017-07-21 14:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
I came, I saw, I ...

Results (324 votes). Check out past polls.