Brainteaser 1049: A question of colour
From The Sunday Times, 5th September 1982 [link]
A frame at snooker, as every player — and every watcher of “Pot Black” — will know, consists of fifteen red balls, worth one point each, and six “colours”: yellow = 2, green = 3, brown = 4, blue = 5, pink = 6 and black = 7.
The reds must all be potted first: after each red the player chooses a single colour to pot (immediately replaced on the table) before addressing the next red. Any miss (or potting of the wrong colour) causes the other player to have his turn. After the last red has been potted, with an attempt at a colour, all the colours are on the table, and they must be potted in ascending order of value.
The game ends when all the colours have been potted, or earlier if the current player has reached a score that cannot be equalled or exceeded by his opponent. For our present purposes, there are no penalty points or snookers.
Unlike the champions we see on television, Arthur and Bertie recently played a frame which was as undistinguished in quality (though neither actually incurred any penalty points) as it was remarkable in other ways. Each of them potted the same number of balls; the scores were level immediately before Bertie potted the last of the reds; and the winner — Arthur by a single point —was not decided until the table was finally cleared. They then discovered that Arthur’s score was the lowest possible for such a close win.
What was Arthur’s score? Which player potted each of the final six “colours” (e.g. B, B, B, B, B, A).
This puzzle is included in the book The Sunday Times Book of Brainteasers (1994).
[teaser1049]

Jim Randell 9:04 am on 28 April 2026 Permalink |
We are looking for the lowest possible scores.
The scores are level with 1 red remaining. So 14 of the reds have been potted. For the lowest possible scores the associated colours must have been missed. So each player has potted 7 reds (and no colours) for a total score of 7.
The remaining balls are: the final red, a possible additional colour, and the 6 colours in order.
So, if the table is cleared and each player pots the same number of balls: B pots the final red, and a colour, to put him on 8 + x points (and has now potted 9 balls). So of the 6 remaining colours B pots 2 and A pots 4.
This Python program examines possible ends to the match.
It runs in 70ms. (Internal runtime is 143µs).
from enigma import (Enumerator, printf) colours = [2, 3, 4, 5, 6, 7] # play the remaining colours def play(A, B, cols, As=[], Bs=[]): # are we done? if not cols: yield (A, B, cols, As, Bs) else: rest = sum(cols) # has someone won? if A > B + rest or B > A + rest: yield (A, B, cols, As, Bs) else: # someone pots the next colour x = cols[0] yield from play(A + x, B, cols[1:], As + [x], Bs) yield from play(A, B + x, cols[1:], As, Bs + [x]) # solve the puzzle, where B pots the final red with colour <x> def solve(x): for (A, B, cols, As, Bs) in play(7, 8 + x, colours): # A wins by 1 point if not (A == B + 1): continue # the table is cleared if cols: continue # A and B potted the same number of balls if not (len(As) == 4 and len(Bs) == 2): continue # return the final scores and colours potted yield (A, B, As, Bs) # choose a colour for A to pot with the final red for x in colours: ss = Enumerator(solve(x)) for (A, B, As, Bs) in ss: # output solution printf("A pots colours {As}; total = {A} pts") printf("B pots final red + {x}; pots colours {Bs}; total = {B} pts") printf() # we only need the smallest solution if ss.count > 0: breakSolution: Arthur’s score was 23. The final six colours were potted as: A, A, A, B, B, A.
The match started with A and B each potting 7 reds and no colours, and then:
B has potted 7 + 2 + 2 = 11 balls. And A has potted 7 + 4 = 11 balls.
LikeLike