Teaser 2430: [Tall, dark and handsome]
From The Sunday Times, 19th April 2009 [link]
Between 200 and 300 men were asked to class themselves tall, dark or handsome, or any combination of these. A quarter felt they had none of these properties. The number including tall as a quality equalled the number including dark and the number including handsome. The number claiming to be tall, dark and handsome was half the number saying they were only dark and handsome. One more than this latter number said they were tall and dark; one more again claimed to be tall and handsome. This last group was exactly half the size of that saying they were only dark.
How many claimed to be tall, dark and handsome?
This puzzle was originally published with no title.
[teaser2430]


Jim Randell 8:28 am on 17 June 2026 Permalink |
We can identify the groups as:
The total number of participants is N ∈ [200, 300].
And we have:
The remaining conditions (after some disambiguation) amount to:
We can choose a value for X (and hence N), and that leaves us with a system of 7 equations in 7 variables, which can be solved using the [[
Matrix.linear()]] solver from the enigma.py library.This Python program runs in 77ms. (Internal runtime is 2.6ms).
from enigma import (Matrix, Rational, irange, as_int, printf) Q = Rational() eqs = Matrix([ # for the groups: T, D, H, TD, TH, DH, TDH # we have the following equations: # T D H TD TH DH TDH ( 1, 1, 1, 1, 1, 1, 1), # = 3*X; # total is 3X (-1, 1, 0, 0, -1, 1, 0), # = 0; T + TD + TH + TDH = D + TD + DH + TDH (-1, 0, 1, -1, 0, 1, 0), # = 0; T + TD + TH + TDH = H + TH + DH + TDH ( 0, 0, 0, 0, 0, -1, 2), # = 0; TDH = DH/2 ( 0, 0, 0, 1, 0, -1, 0), # = 1; DH + 1 = TD [DH/2 + 1 = TD -> multiple solutions] ( 0, 0, 0, -1, 1, 0, 0), # = 1; TD + 1 = TH ( 0, -1, 0, 0, 2, 0, 0), # = 0; TH = D/2 ], field=Q) # consider possible values for X (= N/4) for X in irange(50, 75): N = 4*X vs = [3*X, 0, 0, 0, 1, 1, 0] try: # solve the equations, find non-negative integer solutions (T, D, H, TD, TH, DH, TDH) = eqs.linear_solve(vs, valid=(lambda x: as_int(x, "0+"))) except ValueError: continue # output solution printf("X={X} -> N={N}, T={T} D={D} H={H} TD={TD} TH={TH} DH={DH} TDH={TDH}")Solution: 9 participants claimed to be tall, dark and handsome.
The values are:
LikeLike
Frits 10:31 am on 18 June 2026 Permalink |
Expressing variables in DH leads to 3.N = 38.DH + 48. So DH is a multiple of 3 (and even as well). The only multiple of 6 for DH that leads to a N value between 200 and 300 is 18 giving the answer of 9 men.
LikeLike