# Enigmatic Code

Programming Enigma Puzzles

## Enigma 1402: Folded rectangle

From New Scientist #2562, 29th July 2006

I take a rectangular piece of paper whose sides are each a two-figure number of centimetres, and fold it so that one corner touches the opposite side (as shown below).

The areas of the two triangles A and B are each a two-figure number of square centimetres.

How big was my piece of paper?

[enigma1402]

### 2 responses to “Enigma 1402: Folded rectangle”

1. Jim Randell 15 August 2013 at 9:12 am

This Python program finds the solution based on the observation that the triangles A and B are (mathematically) similar. It runs in 58ms.

```# let a, b be the sides of the original rectangle, a > b
# and the fold divides a into a1, a2 and b into b1, b2
# such that A has sides a1, b1, b2
# and B has sides b, a2, a.
# A and B are similar so: b/a1 = a2/b1 = a/b2

# consider the area B and side b (both 2-digit integers)
# B = (a2 b) / 2, so: a2 = 2B / b
# also: a2^2 = a^2 - b^2, so a2^2 is an integer
# so let a2^2 = m = 4B^2 / b^2

from fractions import Fraction as F
from enigma import irange, is_square, printf

for B in irange(10, 99):
for b in irange(10, 99):
# b^2 must divide 4B^2
(m, r) = divmod(4 * B * B, b * b)
if r > 0: continue
# a^2 = b^2 + m, and a is a 2-digit integer
a = is_square(b * b + m)
if a is None or not(9 < a < 100): continue
# a2 = 2B / b
a2 = F(2 * B, b)
a1 = a - a2
# from similar triangles: b/a1 = a2/b1
b1 = F(a1 * a2, b)
# and area A = (a1 b1) / 2
A = F(a1 * b1, 2)
# but it needs to be a 2-digit integer
if A.denominator > 1 or not(9 < A < 100): continue

printf("a={a} [{a1}+{a2}] b={b} [{b1}+{b2}] A={A} B={B}", b2=b - b1)
```

Solution: The piece of paper was 20cm × 16cm.