# Enigmatic Code

Programming Enigma Puzzles

## Enigma 111: Time trouble

From New Scientist #1225, 28th May 1981 [link]

“What’s the time?” gasped Bulldog Drumstick, too groggy to have a clue.

“Something o’clock,” leered Sing Sing, “and now for a test of British intelligence. There is no guarantee that the clock is the right way up. There is no minute hand. The numbers have all been repainted, some or all of them wrong. If you can tell me the time, you can go free. If not the piranhas are peckish.”

“Be a sport and say how many numbers were repainted the same as before.”

“Never! If you knew that, you could deduce the time.”

Our hero then gave him a British uppercut and made his exit. But you, I am sure, would first announce the right time.

What is it?

[enigma111]

### One response to “Enigma 111: Time trouble”

1. Jim Randell 28 July 2013 at 9:02 am

This Python program runs in 41ms.

```from collections import defaultdict
from enigma import irange, printf

# 0 represents 12
numbers = [0, 6, 9, 4, 1, 5, 3, 7, 11, 10, 2, 8]

# accumulate positions by number of correct digits
r = defaultdict(list)
# consider each position (clock rotated clockwise p positions)
for p in irange(0, 11):
# how many numbers would be correct?
c = list(n for (i, n) in enumerate(numbers) if (i + p) % 12 == n)
r[len(c)].append(p)
printf("[{p}: correct={c}]")

# find unique possibilities
for (c, ps) in r.items():
if len(ps) != 1: continue
p = ps[0]
x = (12 if p == 0 else p)
printf("time = {x} o'clock [position={p}, correct={c}]")
```

Solution: The time is 1 o’clock.