Teaser 2978: Norfolk Flats
From The Sunday Times, 20th October 2019 [link] [link]
Sam has purchased Norfolk Flats; an area of farmland (less than 100 hectares) bordered by six straight fences. He intends to farm an area which is an equilateral triangle with corners that are the midpoints of three of the existing boundaries. This creates three more distinct areas (one for each of his sons); these areas are identical in shape and size and have two sides that are parallel.
Sam measured the area (in square metres) which each son will farm and also his own area. One of the numbers is a square and the other a cube. If I told you which was which, you should be able to work out the area of Norfolk Flats.
What (in square metres) is that area?
[teaser2978]

Jim Randell 5:34 pm on 18 October 2019 Permalink |
I supposed that the plot of land in question was a regular hexagon.
Then, if the hexagon has side x the area of Sam’s triangular enclosure is:
and the area of the enclosure for each son is:
So we can say Sam’s enclosure is 9 area units and each son’s enclosure is 5 area units.
Here is a visual representation of the situation:
So, we need to look for squares and cubes where 5 times one of them is 9 times the other.
This Python program runs in 83ms.
Run: [ @replit ]
from enigma import (irange, inf, div, is_square, printf) # max area (100 hectares = 1_000_000 square metres) M = 1000000 # collect the areas for each case (sam, son, total) (case1, case2) = (list(), list()) # consider values for the cube for x in irange(1, inf): cube = x ** 3 if not (8 * cube < 3 * M): break # does 5 * square = 9 * cube ? square = div(9 * cube, 5) if square is not None and is_square(square): (sam, son) = (square, cube) area = sam + 3 * son if area < M: printf("[1] son = cube = {cube} -> sam = square = {square}, area = {area}") case1.append((sam, son, area)) # does 9 * square = 5 * cube ? square = div(5 * cube, 9) if square is not None and is_square(square): (sam, son) = (cube, square) area = sam + 3 * son if area < M: printf("[2] sam = cube = {cube} -> son = square = {square}, area = {area}") case2.append((sam, son, area)) # consider the cases for ss in (case1, case2): if len(ss) != 1: continue (sam, son, area) = ss[0] printf("area = {area} [sam = {sam}, son = {son}]")Solution: The total area of Norfolk Flats is 243,000 square metres (= 24.3 hectares).
Sam’s enclosure is 91,125 square metres (= 45³).
Each son’s enclosure is 50,625 square metres (= 225²).
So each side of the hexagon is about 305.83 metres long.
This is the only viable solution where the area of Sam’s enclosure is a perfect cube, and the area of each son’s enclosure is a perfect square. So it is the answer to the puzzle.
If the area of Sam’s enclosure is a perfect square, and the area of each son’s enclosure is a perfect cube, we find there are three potential solutions (where the total area is below 1 million square metres):
So this case is ruled out as the answer.
Manually:
[1] In the case: 5a² = 9b³
We see that 3 must divide a, and 5 must divide b. So:
So 5 must divide p:
So we are looking for numbers that are simultaneously squares and cubes, i.e. powers of 6.
And we are interested in cases where:
So there are three possible solutions in this case (those given above).
[2] In the case: 5a³ = 9b²
We can similarly arrive at a solution of:
And we require:
So in this case there is a single solution, and from this we get the answer to the puzzle.
LikeLike
Robert Brown 10:39 pm on 18 October 2019 Permalink |
It doesn’t say the fences are the same length. Alternate short & long fences makes a diagram that fits the words in the text – only restriction I can see is that ‘son’ is < 'sam'. If this is true, I don't see a possible solution.
LikeLike
Jim Randell 11:03 pm on 18 October 2019 Permalink |
@Robert: I think if you don’t require the hexagon to be regular it is possible to find side lengths that will work for many different (square, cube) combinations, so it wouldn’t be possible to work out the total area being told which of the enclosures areas was a square which was a cube.
But with a regular hexagon there are many fewer possibilities and we can find a unique solution, so it is probably what the setter had in mind (although not what the text of the puzzle explicitly states).
LikeLike
GeoffR 3:30 pm on 22 October 2019 Permalink |
# This solution uses Jim's diagram i.e son/sam = 5/9 in area ratio # F + 3.(5/9).F < 1000000 -> F < 375000 # Hence squares < 613, cubes < 73 from collections import defaultdict # Two dictionaries to collect squares and cubes for each case # i.e 5 * square = 9 * cube or 9 * square = 5 * cube d1 = defaultdict(list) # 5 * square = 9 * cube d2 = defaultdict(list) # 9 * square = 5 * cube # F + 3.(5/9).F < 1000000 -> F < 375000 # hence squares < 613, cubes < 73 sq = [n * n for n in range(10, 613)] cb = [n * n * n for n in range(10, 73)] for x in sq: for y in cb: if 5 * x == 9 * y: d1[x] += [(x, y)] # Other solution if 9 * x == 5 * y: d2[x] += [(x, y)] # One of the two dictionaries must have a single solution for k,v in d1.items(): if len(v) == 1 and len(d1) == 1: print(f"Norfolk Flats Area = {3 * v[0][0] + v[0][1]} sm") print(f"Son's area = {v[0][0]} sm, Sam's area = {v[0][1]} sm") for k,v in d2.items(): if len(v) == 1 and len(d2) == 1: print(f"Norfolk Flats Area = {3 * v[0][0] + v[0][1]} sm") print(f"Son's area = {v[0][0]} sm, Sam's area = {v[0][1]} sm")LikeLike