|Perl: the Markov chain saw|
This was a fun one. My solution looks quite similiar to Abigail's in structure, but is not nearly so elegant.
I question how they are really going to judge these based on execution time. Its basically a "find the needle in a haystack" problem, but after you've found it, its pretty easy to write a program that finds it faster the next time around.
For instance: Which one of these wins? Are any thrown out for "cheating"?
1: Brute force, try every concievable set of four numbers (loooong time)
2: Using some sort of filtering at each stage, so not every set of four is used (much quicker)
3: Cleverly ordering the stages, so they are done in an optimum order -- perhaps 'THREE->TEN->ONE->SIX'. (slightly quicker, though is uses information gathered in program 2)
4: Brute force, but coded so that the first set of four you try is the correct answer. (even faster!!!)
5: print "$answer"; (clearly the fastest)
Since there is only one haystack and one needle, how do you determine which program "finds" it, and which has already been told where it is....