Brain teaser 975: Ambiguous birthdays
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 8:22 am on 15 May 2026 Permalink |
The cabalist’s DOB cannot be 6 digits or 4 digits, as there is only one way to reverse these:
But if it had 5 digits, there are 2 ways it can be reversed:
As the friend is younger than the setter they must be born later in the year, so:
And the cabalist and the setter share their birth month, so:
Here is a solution using the [[
SubstitutedExpression]] solver from the enigma.py library.It runs in 86ms. (Internal runtime of the generated code is 2.2ms).
Solution: The cabalist’s date of birth was 12/1/13 (12th January 1913).
And so the setter’s date of birth is 31/1/21 (31st January 1921) and the friend’s date of birth is 3/11/21 (3rd November 1921).
LikeLike
ruudvanderham 2:01 pm on 15 May 2026 Permalink |
import datetime date0 = datetime.datetime(1880, 1, 1) date1 = datetime.datetime(1980, 1, 1) day = {} month = {} date = date0 while date < date1: date = date + datetime.timedelta(1) as_str = f"{date.day}{date.month}{date.year % 100:02d}"[::-1] if len(as_str) == 5 and "0" not in as_str[:3]: year = int(as_str[3:]) year += 1800 if year > 80 else 1900 if year - date.year == 8: for i in range(2): month[i] = int(as_str[i + 1 : 3]) day[i] = int(as_str[: i + 1]) if month == date.month: i_equal = i try: datetime.datetime(year, month[i], day[i]) except ValueError: break else: for i in range(2): if month[i] == date.month: if datetime.datetime(year, month[i], day[i]) < datetime.datetime(year, month[1 - i], day[1 - i]): print( f"Cabalist: {date:%Y-%m-%d} / Me: {datetime.datetime(year, month[i], day[i]):%Y-%m-%d} / Friend:{datetime.datetime(year, month[1 - i], day[1 - i]):%Y-%m-%d}" )LikeLike