# Enigmatic Code

Programming Enigma Puzzles

## Enigma 1259: Keeping order

From New Scientist #2415, 4th October 2003 [link]

As part of an exam the letters A to F were written down in some order and briefly shown to the candidates, who then tried to memorise the order. Their individual recollections were:

candidate 1: BCDAEF;
candidate 2: DAEFBC;
candidate 3: ABEFDC;
candidate 4: BCFDEA;
candidate 5: AEBDFC;
candidate 6: CFEABD;
candidate 7: DCAEFB.

Then the written exam consisted of a list of questions: for each pair of the letters the candidates were asked which came first. So, for example, one of the questions was “Which came first, A or B?” and another question was “Which came first, A or C?” and so on.

The candidates based their answers on their own individual recollections of the order and, as a consequence, each candidate got a different, even number of the questions right.

What was the correct order?

[enigma1259]

### One response to “Enigma 1259: Keeping order”

1. Jim Randell 31 January 2015 at 9:01 am

It’s easy enough to consider all the possible permutations of the letters.

This Python program runs in 204ms.

```from itertools import permutations, combinations
from enigma import printf

# candidate's recollections of the order
rs = (
'BCDAEF',
'DAEFBC',
'ABEFDC',
'BCFDEA',
'AEBDFC',
'CFEABD',
'DCAEFB',
)

# count the number of correct ordered pairs
def count(r, s):
return sum(1 for (a, b) in combinations(s, 2) if r.index(a) < r.index(b))

# consider possible correct orderings
for s in permutations('ABCDEF'):
# count how many pairs are right for each candidate
t = set(count(r, s) for r in rs)
# the answers should be distinct, and all even
if len(t) == 7 and all(x % 2 == 0 for x in t):
printf("{s} => {t}")
```

Solution: The correct order was DAEFCB.