An American Brain Teaser
From The Sunday Times, 5th June 1949 [link]
The conundrum below below was said to have been posed by an American professor, with unflattering results, to an academic congress.
A man calling on a friend in an American town saw a number of children playing in the garden. Without counting them he said to his host: “Surely they are not all yours?”. The other man replied: “No, there are four families, the largest being my own, the next largest my brother’s, the third largest my younger sister’s, and the smallest my elder sister’s. It is a pity that there are too few to make up a couple of base-ball teams”. (There are nine a side at base-ball).
Then he added: “Oddly enough, the numbers of the four families of children, multiplied together, make the street number of this house”. The visitor, who knew the street number, thought for a moment and said: “Has the smallest family one or two children?”. His host having given the answer, he then stated with certainty how many there were in each family.
How many were there?
This one of the occasional Holiday Brain Teasers published in The Sunday Times prior to the start of numbered Teasers in 1961 that I have found. A prize of 10 guineas was offered.
[teaser-1949-06-05] [teaser-unnumbered]
Jim Randell 11:38 am on 2 January 2022 Permalink |
This Python program runs in 51ms.
Run: [ @replit ]
from enigma import (irange, decompose, group, multiply, unpack, printf) # generate possible arrangements def generate(): # consider the total number of children (< 18) for t in irange(10, 17): # break the total down into 4 families for ns in decompose(t, 4): yield ns # group the arrangements by product g = group(generate(), by=multiply) # consider products, and arrangements that make that product for (k, vs) in g.items(): # there must be more than 1 arrangement if not (len(vs) > 1): continue # now group the arrangements by the smallest value ... g1 = group(vs, unpack(lambda a, b, c, d: a)) # ... which must be 1 or 2 if not (set(g1.keys()) == {1, 2}): continue # and find unique groups for (a, ns) in g1.items(): if len(ns) == 1: printf("kids = {ns[0]}; k={k} vs={vs}")Solution: The numbers of children in the families were: 2, 3, 4, 5.
The house number is 120, so the possible numbers of children are:
The response for the number of children in the smallest family must be “2” (as “1” would not allow the numbers to be deduced), and this leads to a single arrangement.
LikeLike
GeoffR 4:39 pm on 2 January 2022 Permalink |
LikeLike