**From New Scientist #2471, 30th October 2004**

Draw a triangle *ABC*. On the side *AB* mark the point *P* such that *AP*=(2/5)*AB*, on *BC* mark *Q* such that *BQ*=(2/5)*BC* and on *CA* mark *R* such that *CR*=(2/5)*CA*.

Draw the lines *AQ*, *BR* and *CP*. Call the point where *AQ* and *BR* cross *X*, the point where *BR* and *CP* cross *Y* and the point where *CP* and *AQ* cross *Z*.

If you did the appropriate calculations you would find that the area of triangle *XYZ* is 1/19 of the area of triangle *ABC*.

I went through the whole procedure above again, but, this time with each occurrence of the number 2/5 replaced by the number *k*, which is between 0 and 1/2. This time I found that the area of triangle *XYZ* was 1/37 of the area of triangle *ABC*.

What was the number *k*?

[enigma1313]

### Like this:

Like Loading...

*Related*

This Python program uses the SymPy to do the maths. It runs in 444ms.

Solution:k = 3/7.Here’s a diagram that explains how the maths works:

I’ve used an equilateral triangle, but a similar approach will work with any triangle and give the same result.

The equation derived for the ratio of the areas is:

which, as can be seen in this graph, starts at R=1 when k=0, drops to R=0 at k=½ and then rises back to R=1 at k=1, which is how we would expect it to behave.

And here’s a constructive numerical solution in Python using the

find_value()function from theenigma.pylibrary. It uses a simple right angled triangle for the construction (although any triangle (A, B, C) could be specified in the calculation of R). After the numerical calculation it finds the closest rational approximation with a denominator of 1000 or less to give as the answer. It runs in 46ms.This code uses the ability to specify pairs as the formal arguments in function definitions, which Python 2.7.6 doesn’t seem to have a problem with, but it doesn’t work in Python 3.4.0, which is a shame as I thought it was rather a neat (and useful) trick. (PEP 3113 [ http://legacy.python.org/dev/peps/pep-3113/ ] explains their removal in Python 3, and how to work around it ).