How to interpret “Top N except A,B,C”

If someone were to ask you to name the top N things/people etc. except for some (that would be in the list, otherwise) then what would you reply with?

To illustrate this question properly, I will provide an example and also the exact use case in point.

Example: “What are the top 3 movies on IMDb’s charts except for The Shawshank Redemption?”
Possible answer 1: “The Godfather, The God Father: Part II, and The Dark Knight”
Possible answer 2: “The Godfather, and The God Father: Part II”

My reasoning says that answer 1 should be correct, but some people say that The Dark Knight was not in the “top 3”, so it should not be in the “top 3 except…”

The actual use case in point is the following:
Nmap has a top-ports option, and we are planning on adding an exclude-ports option. In this case, we are unsure of whether “–top-ports 3 –exclude-ports 80” should scan 2 or 3 ports (Note: 80 is the port scanned if we say “–top-ports 1”).

Answer

What are the top 3 films on IMDB, excluding The Shawshank Redemption?

The Godfather, The God Father: Part II & The Dark Knight.

What films are in IMDB’s top 3, excluding The Shawshank Redemption?

The Godfather & The God Father: Part II.

The latter doesn’t seem a very natural question, either as a matter of language or as something someone might actually ask.

It would be much more easily differentiated in a computer query language of course where operator precedence, parentheses and so on (depending on the language) can make things unambiguous.

But in plain English, it’s much more likely to mean that you get 3 results.

I think though you are looking at your UX problem the wrong way around. You’re inventing a phrase for proposed functionality, and then tryig to figure out what you mean! Rather first decide which:

  1. Is most likely to be desired by the user.
  2. Is most amenable to turning into a different result if the user wants something else.

For 1. I’d guess they want 3 ports, but that’s hard to be sure about.

For 2. I’d definitely say 3 ports: I can turn the first answer above into the second by filtering after the fact myself. But if I want the first answer and I have to do my own filtering, then I have to get at least 4 films (3 for my answer + 1 I want to reject if it comes up), and similarly with ports, I’d need to ask for more. If my list of ports to exclude is large (or worse, matches some pattern), it could be a lot.

Then, write your code to act accordingly.

And only then are we back from UX matters into the realm of EL&U, when you document it. This is more easily done in this direction, because you can just add a clarifying sentence:

--top-ports x scan the most popular x ports. If used with --exclude-ports, then ports are excluded first, and x remaining ports are scanned.

Attribution
Source : Link , Question Author : Jay Bosamiya , Answer Author : Jon Hanna

Leave a Comment