Library · The Fiddler: Solutions · Chapter 2
Can You Frame the Triangle?
A paper football is an equilateral triangle of side one inch, and it is to be framed. What is the side of the smallest square frame that will hold it?
The Fiddler, Zach Wissner-Gross, September 25, 2026(original post)
The official solution appeared in the post of October 2, 2026 and gives for the main puzzle, reaching the same way, by setting . The Extra Credit half of that post is paywalled, so is my own and has not been checked against it.
Solution
Put the triangle’s centre at the origin. A unit equilateral triangle has circumradius , so after a turn through its vertices sit at angles , and at that distance from the centre.
A square frame must be as wide as the triangle and as tall, so its side is the larger of those two extents, and both are worth writing down. The horizontal extent is the spread of the three vertex -coordinates. For between and the extreme pair are the vertices at and , so by . The vertical extent is the same function measured a quarter turn round, , which for is .
On that range the frame therefore has side . One term climbs and the other falls, so their maximum is least where they meet: and there the frame comes out square by construction, of side . At that angle the triangle touches all four sides of the frame, with the vertex that is both leftmost and highest sitting exactly in a corner.
Left alone, with one side horizontal, the frame would need a full inch, since the triangle’s side is an inch while its height is only . The tilt saves about per cent on the side, which is the puzzle’s small surprise: the tidy orientation is the expensive one.
The computation
The check works from the three vertex coordinates and assumes none of the algebra above. It rotates the triangle, takes the spread of the coordinates in each direction, and keeps the larger.
import numpy as np
from math import pi, sqrt
R = 1/sqrt(3) # circumradius of a unit equilateral triangle
def side(theta): # side of the smallest axis-aligned square
a = theta + np.array([0.0, 2*pi/3, 4*pi/3])
x, y = R*np.cos(a), R*np.sin(a)
return max(x.max() - x.min(), y.max() - y.min())
Scanning rotations puts the smallest frame at , reached at , against , and the largest at exactly . The same function confirms that the triangle in use has all three sides equal to , which is worth asserting rather than assuming.
Extra Credit
Now spin the football through a uniformly random angle and frame it with a square whose sides are horizontal and vertical. On average, what side does the frame need?
Solution
The answer is the average of over a uniform angle, and the work lies in seeing how little of the circle has to be looked at.
The triangle carries itself onto itself under a third of a turn, so repeats every . Exchanging the two extents is a quarter turn, and the two symmetries together make repeat every . Within one period the extents trade places at , and , which cuts the period into four arcs of . On each arc is a piece of a single sine curve, with its argument sweeping between and in one direction or the other.
That is the whole calculation, because a sine curve is symmetric about its peak. All four arcs therefore contribute the same amount, and dividing the total by the length of the period gives
Two features of that number are worth pausing on. It lies between the best frame at and the worst at exactly , which occurs whenever a side of the triangle is horizontal or vertical. And it lies above the midpoint of those two, , because a sine curve flattens near its peak, so a spinning triangle spends longer close to its widest than close to its narrowest.
A random spin thus costs about two and a third per cent more frame than careful placement, and it still beats the tidy orientation, which is the worst case of all.
The computation
Integrating over one period by Simpson’s rule gives against , agreeing to .
One check earns its place here. The claim that the period is rather than something longer is easy to assume and easy to get wrong, and the whole calculation rests on it, so the same average was taken over a full turn instead. That returns , the small difference being the coarser grid rather than a different answer.