Teaser 3073: Snookered
From The Sunday Times, 15th August 2021 [link] [link]
The playing surface of a snooker table is a twelve-foot by six-foot rectangle. A ball is placed at P on the bottom cushion (which is six feet wide) and hit so it bounces off the left cushion, right cushion and into the top-left pocket.
Now the ball is replaced at P and hit so it bounces off the left cushion, top cushion and into the bottom right pocket, after travelling 30% further than the first shot took. The ball always comes away from the cushion at the same angle that it hits the cushion.
How far did the ball travel on the second shot?
[teaser3073]
Jim Randell 5:07 pm on 13 August 2021 Permalink |
(See also: Teaser 1917).
With a suitable diagram this puzzle reduces to solving a quadratic equation.
By reflecting the table along its sides we can convert the paths of the ball into straight lines, whose length can be easily calculated. (For the purposes of this puzzle the ball and the pockets can be considered to be points of negligible size).
We see that the 1st distance A is given by:
And the second distance B by:
And they are related by:
This gives us a quadratic equation in x, which we can solve to find the required answer (= B).
Run: [ @replit ]
from enigma import (quadratic, sq, hypot, printf) # dimensions of the table (X, Y) = (6, 12) # B = (P/Q) A # (P^2)(A^2) = (Q^2)(B^2) (P2, Q2) = (sq(13), sq(10)) # calculate the coefficients of the quadratic: a.x^2 + b.x + c = 0 a = P2 - Q2 b = P2 * 2 * Y - Q2 * 2 * X c = P2 * 2 * sq(Y) - Q2 * (sq(2 * Y) + sq(X)) printf("[({a:+d})x^2 ({b:+d})x ({c:+d})]") # and solve the equation to determine x for x in quadratic(a, b, c, domain='F'): if 0 < x < X: # calculate the paths A = hypot(12, 12 + x) B = hypot(24, 6 + x) printf("A={A:g} B={B:g} [x={x:g}]")Solution: On the second shot the ball travelled 26 feet.
The required equation is:
This factorises as:
From which the value of x is obvious, and the value of B can then be calculated.
We find:
LikeLike
Frits 6:25 pm on 13 August 2021 Permalink |
@Jim, I verified your quadratic solution. It directly follows from the diagram.
LikeLike
Jim Randell 11:51 am on 16 August 2021 Permalink |
Or finding the answer numerically:
Run: [ @replit ]
from enigma import (hypot, fdiv, find_value, printf) # calculate paths A and B A = lambda x: hypot(12, 12 + x) B = lambda x: hypot(24, 6 + x) # find an x value that gives B/A = 1.3 x = find_value((lambda x: fdiv(B(x), A(x))), 1.3, 0, 6).v printf("A={A:g} B={B:g} [x={x:g}]", A=A(x), B=B(x))LikeLike