From The Sunday Times, 29th March 1981 [link]
Recently I attended the Numerical Astrologers Conference, held annually in Brighton. At this meeting, members wore badges on which were written not only their names, but also their dates of birth. These dates were written numerically in the usual English manner of first putting the day, then the month, then the year (e.g. 7th March 1946 would be represented by 7/3/46, and the 31st December 1954 by 31/12/54). The year always uses two digits.
I had just entered the meeting when I was accosted by an internationally acclaimed cabalist, who, I noticed, shared with me the month of his birthday, though he was born in a year eight years prior to the year of my birth. He had been looking at my badge, and now told me that the digits of my date of birth were, in sequence, in exactly the reverse order to his own.
We were eagerly discussing this coincidence when an old acquaintance of mine introduced himself to the cabalist, who then made the same claim to my friend about their dates of birth. At first this puzzled me, as I knew my friend to be younger than myself, but, upon inspection, both the claims proved to be correct.
Strangely, both of us had dates of birth whose digits, when taken in completely the reverse order, were exactly the same as those of the cabalist.
Numerically, what was the cabalist’s date of birth?
The puzzle is included in the book The Sunday Times Book of Brainteasers (1994).
[teaser975]
Jim Randell 11:09 am on 5 June 2026 Permalink |
Here is a solution using the [[
SubstitutedExpression.split_sum]] solver from the enigma.py library.It runs in 116ms. (Internal runtime of the generated code is 2.5ms).
Solution: The time was: 15:30 (i.e. 3:30 pm).
The sum is one of:
Both of which give TIME = 1530.
G and R are 7 and 8 in some order, and the values of the other letters are fixed.
LikeLike
Ruud 1:47 pm on 5 June 2026 Permalink |
import peek import istr for ti, m, e in istr.product(range(10, 24), range(6), range(10)): if (time := ti | m | e).all_distinct(): rest = set(istr.digits()) - set(time) for s, a, g, o, d, r in istr.permutations(rest, 6): if a and g and r and (times := time | s) == a + istr(":=good") + istr(":=read"): peek(time, times, a, good, read)LikeLike