Brain-Teaser 508: [Family birthdays]
From The Sunday Times, 7th March 1971 [link]
Grandma said: “Grandpa and I share between 100 and 120 years of age, being both over 50 years old. The total ages of our family (our son and his children — all of different age years, and over 12 months) exactly equal [my own age. On the same day next year they will exactly equal] Grandpa’s age.”
“At present, Grandpa’s age is divisible by the age of only one child, but in one year’s time it will be divisible by the separate ages of three children, and also by the number in our family, while my own age will be divisible by the age of one child only (unity always excluded).”
“During the year ahead on just one day in May, Grandpa’s age will be divisible by that of our son, whose birthday is earlier.”
“From Grandpa downwards, what are our ages?”
The following apology was published with Brain-Teaser 511:
It is regretted that by a printing error the following words were omitted after “exactly equal”: “my own age. On the same day next year they will exactly equal”.
I have inserted the missing text in the puzzle above.
This puzzle was originally published with no title.
[teaser508]
Jim Randell 2:22 pm on 5 November 2019 Permalink |
I wrote a program to solve the puzzle as originally stated (without the additional text) and found 15 solutions.
So I created a MiniZinc model that makes it easy to play around with variations on the puzzle.
When the constraints arising from the missing text are incorporated we get a single solution.
And we can format the output with Python 3 by using the minizinc.py wrapper:
from minizinc import MiniZinc for (gp, gm, son, kids) in MiniZinc("teaser508.mzn").solve(result="gp gm son kids"): kids = list(x for x in kids.values() if x > 0) print(f"Grandpa = {gp}; Grandma = {gm}; Son = {son}; Children = {kids}")So the answer to the corrected puzzle is:
Solution: Grandpa = 62; Grandma = 56; Son = 30; Children = 8, 6, 5, 4, 2, 1.
Without the constraints to enforce a 16 year gap between generations we can have a further solution (with 7 children):
LikeLike