. | . | . |
![]() |
Main | Links | Orders | Post | Next Page | Next + 10 |
Dividing an integer triangle into smaller integer triangles. Solutions by William Watson and Timothy Firman. Drawn to scale by Ed Pegg Jr.
Here is William Watson's solution in text format. 4.4 and
4.11 can be updated to the figures above.
*3.0 lside 22 per 49 8 22 19
8 6 4 6 22 17 4 17 19
*3.1 lside 17 per 39 9 13 17
9 5 11 11 3 13 13 5 17
*3.2 lside 17 per 39 9 13 17
6 9 13 3 8 9 13 5
17
*3.3 lside 15 per 40 13 15 12 13
10 5 10 9 5 10 6 12
*4.1 lside 26 per 70 26 25 19 26
13 15 13 20 9 15 9 18 18
5 19
*4.2 lside 37 per 98 37 36 25 37
27 14 27 36 15 14 5 17 17 10
25
*4.3 lside 26 per 64 18 20 26 18
9 15 9 10 5 5 10 13
15 13 26
*4.4 lside 38 per 108 34 36 38 34 21 22
27 38 16 15 24 36 7 6 8
*4.5 lside 24 per 60 15 21 24
8 7 3 7 12 13 15 9 21
7 13 15
*4.6 lside 21 per 49 17 21 11 17
5 13 13 9 6 9 8 3
9 8 11
*4.7 lside 27 per 64 25 12 27 20
9 13 9 10 13 5 9 10
26 3 27
*4.8 lside 24 per 69 22 23 24 22
18 5 16 11 15 2 12 11 20
11 24
*4.9 lside 18 per 50 17 18 15 17
5 13 13 3 11 11 8 9
18 6 16
*4.10 lside 24 per 64 18 24 22 18 15 17
17 5 13 8 9 11 13 3 11
*4.11 lside 29 per 64 17 18 29 17
5 13 8 9 11 22 9 29
13 3 11
*4.12 lside 25 per 70 25 21 24 15 16 23
10 3 9 9 15 16 23 3 24
*4.13 lside 24 per 63 21 18 24 6
19 23 4 17 19 12 11 9 23
2 24
*4.14 lside 29 per 72 16 27 29 16 13 11
13 6 9 9 12 11 22 9 29
*4.15 lside 27 per 60 9 24 27
9 5 11 11 3 13 13 5 17
17 11 21
*4.16 lside 21 per 51 13 21 17 13
7 8 7 5 3 10 16 14
8 7 3
*4.17 lside 29 per 80 26 25 29 13 16 25
13 12 10 12 15 6 25 10 29
*4.18 lside 20 per 54 20 15 19 20 13
9 13 10 9 3 5 6
15 6 19
*4.19 lside 24 per 54 13 24 17 13
9 6 9 3 8 9
8 11 11 8 17
*4.20 lside 23 per 52 16 13 23 14
4 17 2 3 4 17 4 19
19 6 23
*4.21 lside 26 per 70 19 26 25 19 15
6 15 13 12 10 13 5 18 10 20
*4.22 lside 22 per 56 16 22 18 11
9 13 5 11 9 9 11 12
13 9 6
*4.23 lside 26 per 66 18 22 26 12
9 11 9 6 13 13 16 11 22
6 26
Here is Timothy Firman's Fortran Source code.
Here they are; I've included some output after each. I didn't
write complete checking for similar, isosceles, parellel lines, etc. (As
I'm sure you've guessed)
A (a.k.a. 3.1)
generates some false minima.
real*8 a,b,c,d,e,f,cc,cb,cd,ce,ab,sq
do 2 a=5.,50.,1.
do 3 b=(mod(a,1.)+1.),(a-1.),1.
do 4 c=(a-b+1.),(b-1.),1.
cc=((a*a+b*b-c*c)/(2.*a*b))
cb=((a*a-b*b+c*c)/(2.*a*c))
ab=dacos(cb)
do
5 d=2.,(a-1.),1.
do 6 e=2.,(a-1.),1.
if((d+e).ge.(b+c))goto 6
if((d+e).le.a)goto 6
if(d.eq.e)goto 6
ce=((a*a+d*d-e*e)/(2.*a*d))
if(ce.le.cc)goto 6
cd=((a*a-d*d+e*e)/(2.*a*e))
if(cd.le.cb)goto 6
sq=(c*c+e*e-(2.*c*e*dcos(ab-dacos(cd))))
if((sq-dreal(int(sq))).lt.(.00001))sq=dreal(int(sq))
if((sq-dreal(int(sq))).gt.(.99999))sq=dreal(int(sq))+1.
if((mod(sq,1.)).ne.0.)goto
6
f=DSQRT(sq)
if((f-dreal(int(f))).lt.(.0001))f=dreal(int(f))
if((f-dreal(int(f))).gt.(.9999))f=dreal(int(f))+1.
if(((f+d).eq.b).or.((f+e).eq.c))
goto 6
if((mod(f,1.)).eq.0.)write(6,9) a,b,c,d,e,f
9
format(6f12.8)
6
continue
5 continue
4 continue
3 continue
2 continue
90 end
22.00000000 19.00000000 8.00000000 17.00000000
6.00000000 4.00000000
23.00000000 21.00000000 20.00000000 13.00000000 14.00000000
10.00000000
26.00000000 20.00000000 18.00000000 13.00000000 15.00000000
9.00000000
28.00000000 26.00000000 24.00000000 21.00000000 17.00000000
8.00000000
28.00000000 27.00000000 23.00000000 20.00000000 18.00000000
8.00000000
30.00000000 27.00000000 22.00000000 23.00000000 16.00000000
7.00000000
30.00000000 28.00000000 21.00000000 22.00000000 17.00000000
7.00000000
32.00000000 30.00000000 13.00000000 28.00000000 6.00000000
8.00000000
32.00000000 30.00000000 26.00000000 15.00000000 19.00000000
18.00000000
33.00000000 24.00000000 22.00000000 23.00000000 13.00000000
10.00000000
4
requires input error threshold; will still generate the correct
minimum
when it is equal to .0000000000001, but won't if it equals zero.
real*8 a,b,c,d,e,f,g,h,i,ci,ih,cfb,sih,cfc
real*8 cc,cb,ce,cd,aca,acb,aab,ach,abh,t
read(5,*)t
do 2 a=5.,100.,1.
do 3 b=(mod(a,1.)+1.),(a-1.),1.
do 4 c=(a-b+1.),(b-1.),1.
cc=((a*a+b*b-c*c)/(2.*a*b))
cb=((a*a-b*b+c*c)/(2.*a*c))
aca=dacos(cb)
aab=dacos(cc)
acb=dacos(((b*b-a*a+c*c)/(2.*b*c)))
do
5 d=2.,(a-1.),1.
do 6 e=2.,(a-1.),1.
if((d+e).ge.(b+c))goto 6
if((d+e).le.a)goto 6
if(d.eq.e)goto 6
ce=((a*a+d*d-e*e)/(2.*a*d))
if(ce.le.cc)goto 6
cd=((a*a-d*d+e*e)/(2.*a*e))
if(cd.le.cb)goto 6
ach=aca-dacos(cd)
abh=aab-dacos(ce)
cfb=dcos(aab-dacos(ce))
cfc=dcos(aca-dacos(cd))
do 7 f=2.,(d-2.),1.
g=DSQRT(f*f+b*b-(2.*f*b*cfb))
if((g-dreal(int(g))).lt.t)g=dreal(int(g))
if((g-dreal(int(g))).gt.(1.-t))g=dreal(int(g))+1.
if((mod(g,1.)).ne.0.)goto 7
ci=acb-dacos((g*g+b*b-f*f)/(2.*g*b))
sih=dsin(ach+ci)
h=c*dsin(ci)/sih
if((h-dreal(int(h))).lt.t)h=dreal(int(h))
if((h-dreal(int(h))).gt.(1.-t))h=dreal(int(h))+1.
if((mod(h,1.)).ne.0.)goto 7
i=c*dsin(ach)/sih
if((i-dreal(int(i))).lt.t)i=dreal(int(i))
if((i-dreal(int(i))).gt.(1.-t))i=dreal(int(i))+1.
if((mod(i,1.)).ne.0.)goto 7
write(6,9) a,b,c,d,e,f,g,h,i
7
continue
do 8 f=2.,(e-2.),1.
g=DSQRT(f*f+c*c-(2.*f*c*cfc))
if((g-dreal(int(g))).lt.t)g=dreal(int(g))
if((g-dreal(int(g))).gt.(1.-t))g=dreal(int(g))+1.
if((mod(g,1.)).ne.0.)goto 8
ci=acb-dacos((g*g+c*c-f*f)/(2.*g*c))
sih=dsin(abh+ci)
h=b*dsin(ci)/sih
if((h-dreal(int(h))).lt.t)h=dreal(int(h))
if((h-dreal(int(h))).gt.(1.-t))h=dreal(int(h))+1.
if((mod(h,1.)).ne.0.)goto 8
i=b*dsin(abh)/sih
if((i-dreal(int(i))).lt.t)i=dreal(int(i))
if((i-dreal(int(i))).gt.(1.-t))i=dreal(int(i))+1.
if((mod(i,1.)).ne.0.)goto 8
write(6,10) a,b,c,d,e,f,g,h,i
8
continue
6
continue
5 continue
4 continue
3 continue
2 continue
9
format('g on d',9f8.4)
10
format('g on e',9f8.4)
90 end
sample output:
g on d 21.0000 19.0000 16.0000 15.0000 9.0000 7.0000
13.0000 14.0000 6.0000
g on e 23.0000 22.0000 15.0000 12.0000 14.0000 10.0000 10.0000
18.0000 5.0000
g on d 25.0000 21.0000 18.0000 17.0000 9.0000 8.0000
15.0000 16.0000 10.0000
g on d 27.0000 24.0000 21.0000 21.0000 8.0000 18.0000 14.0000
12.0000 11.0000
g on d 32.0000 24.0000 16.0000 20.0000 13.0000 16.0000 10.0000
16.0000 8.0000
g on e 32.0000 28.0000 24.0000 13.0000 20.0000 12.0000 18.0000
21.0000 14.0000
g on e 32.0000 30.0000 22.0000 12.0000 22.0000 12.0000 17.0000
24.0000 9.0000
g on e 34.0000 28.0000 26.0000 21.0000 20.0000 16.0000 12.0000
24.0000 8.0000
g on d 35.0000 30.0000 25.0000 28.0000 9.0000 14.0000 20.0000
21.0000 10.0000
g on e 37.0000 29.0000 18.0000 20.0000 18.0000 9.0000 12.0000
28.0000 8.0000
g on e 38.0000 31.0000 21.0000 11.0000 28.0000 24.0000 18.0000
18.0000 14.0000
g on e 38.0000 36.0000 34.0000 16.0000 27.0000 21.0000 22.0000
24.0000 15.0000
g on d 38.0000 36.0000 34.0000 28.0000 11.0000 18.0000 27.0000
21.0000 22.0000
4.16
real*8 a,b,c,d,e,f,g,h,i,cc,cb,cd,ce,ab,ca,t
read(5,*)t
do 2 a=6.,200.,1.
do 3 b=(mod(a,1.)+1.),(a-1.),1.
do 4 c=(a-b+1.),(b-1.),1.
cc=((a*a+b*b-c*c)/(2.*a*b))
cb=((a*a-b*b+c*c)/(2.*a*c))
ca=((b*b-a*a+c*c)/(2.*b*c))
do
5 d=2.,(b-2.),1.
do 6 e=2.,(c-2.),1.
if(d.eq.e)goto 6
f=DSQRT(d*d+e*e-(2.*d*e*ca))
if((f-dreal(int(f))).lt.t)f=dreal(int(f))
if((f-dreal(int(f))).gt.(1.-t))f=dreal(int(f))+1.
if((mod(f,1.)).eq.0.) then
cdf=(f*f+d*d-e*e)/(2.*f*d)
cef=(e*e+f*f-d*d)/(2.*e*f)
do 7 g=2.,(f-2.),1.
h=DSQRT((c-e)*(c-e)+g*g+(2.*(c-e)*g*cef))
if((h-dreal(int(h))).lt.t)h=dreal(int(h))
if((h-dreal(int(h))).gt.(1.-t))h=dreal(int(h))+1.
if((mod(h,1.)).eq.0.)then
i=DSQRT((b-d)*(b-d)+(f-g)*(f-g)+(2.*(b-d)*(f-g)*cdf))
if((i-dreal(int(i))).lt.t)i=dreal(int(i))
if((i-dreal(int(i))).gt.(1.-t))i=dreal(int(i))+1.
if((mod(i,1.)).eq.0.)write(6,10) a,b,c,d,e,f,g,h,i
endif
7
continue
endif
6
continue
do 8 e=2.,(a-2.),1.
if(d.eq.e)goto 8
f=DSQRT(d*d+e*e-(2.*d*e*cc))
if((f-dreal(int(f))).lt.t)f=dreal(int(f))
if((f-dreal(int(f))).gt.(1.-t))f=dreal(int(f))+1.
if((mod(f,1.)).eq.0.) then
cdf=(f*f+d*d-e*e)/(2.*f*d)
cef=(e*e+f*f-d*d)/(2.*e*f)
do 17 g=2.,(f-2.),1.
h=DSQRT((a-e)*(a-e)+g*g+(2.*(a-e)*g*cef))
if((h-dreal(int(h))).lt.t)h=dreal(int(h))
if((h-dreal(int(h))).gt.(1.-t))h=dreal(int(h))+1.
if((mod(h,1.)).eq.0.)then
i=DSQRT((b-d)*(b-d)+(f-g)*(f-g)+(2.*(b-d)*(f-g)*cdf))
if((i-dreal(int(i))).lt.t)i=dreal(int(i))
if((i-dreal(int(i))).gt.(1.-t))i=dreal(int(i))+1.
if((mod(i,1.)).eq.0.)write(6,11) a,b,c,d,e,f,g,h,i
endif
17
continue
endif
8
continue
5 continue
do
15 d=2.,(a-2.),1.
do 16 e=2.,(c-2.),1.
if(d.eq.e)goto 16
f=DSQRT(d*d+e*e-(2.*d*e*cb))
if((f-dreal(int(f))).lt.t)f=dreal(int(f))
if((f-dreal(int(f))).gt.(1.-t))f=dreal(int(f))+1.
if((mod(f,1.)).eq.0.) then
cdf=(f*f+d*d-e*e)/(2.*f*d)
cef=(e*e+f*f-d*d)/(2.*e*f)
do 27 g=2.,(f-2.),1.
h=DSQRT((c-e)*(c-e)+g*g+(2.*(c-e)*g*cef))
if((h-dreal(int(h))).lt.t)h=dreal(int(h))
if((h-dreal(int(h))).gt.(1.-t))h=dreal(int(h))+1.
if((mod(h,1.)).eq.0.)then
i=DSQRT((a-d)*(a-d)+(f-g)*(f-g)+(2.*(a-d)*(f-g)*cdf))
if((i-dreal(int(i))).lt.t)i=dreal(int(i))
if((i-dreal(int(i))).gt.(1.-t))i=dreal(int(i))+1.
if((mod(i,1.)).eq.0.)write(6,12) a,b,c,d,e,f,g,h,i
endif
27
continue
endif
16
continue
15 continue
4 continue
3 continue
2 continue
10
format('a ',9f8.4)
11
format('c ',9f8.4)
12
format('b ',9f8.4)
90 end
.000001
c 21.0000 17.0000 13.0000 14.0000 16.0000 10.0000
3.0000 7.0000 8.0000
c 22.0000 18.0000 16.0000 9.0000 11.0000
8.0000 3.0000 13.0000 11.0000
b 22.0000 19.0000 8.0000 8.0000 6.0000
7.0000 3.0000 4.0000 17.0000
c 24.0000 18.0000 12.0000 12.0000 16.0000 8.0000
5.0000 12.0000 6.0000
b 24.0000 20.0000 16.0000 18.0000 12.0000 15.0000
4.0000 6.0000 16.0000
a 24.0000 21.0000 15.0000 14.0000 10.0000 16.0000
3.0000 7.0000 19.0000
c 24.0000 21.0000 15.0000 14.0000 16.0000 10.0000
7.0000 13.0000 8.0000
c 24.0000 21.0000 15.0000 16.0000 14.0000 10.0000
7.0000 13.0000 7.0000
b 24.0000 21.0000 18.0000 16.0000 12.0000 14.0000
9.0000 12.0000 12.0000
c 26.0000 18.0000 16.0000 9.0000 13.0000
8.0000 5.0000 17.0000 9.0000
4.5
real*8 a,b,c,d,e,f,g,h,i
real*8 cc,cb,ce,cd,aca,acb,aab,ch,ci,ih,cfb,sih,t
read(5,*)t
do 2 a=6.,100.,1.
do 3 b=(mod(a,1.)+1.),(a-1.),1.
if (b.lt.5) goto 3
do 4 c=(a-b+1.),(b-1.),1.
if (c.lt.4) goto
4
ca=((c*c+b*b-a*a)/(2.*c*b))
cb=((a*a-b*b+c*c)/(2.*a*c))
cc=((a*a+b*b-c*c)/(2.*a*b))
do
5 d=2.,(a-2.),1.
do 6 e=2.,(b-2.),1.
if(d.eq.e)goto 6
g=DSQRT(d*d+e*e-(2.*e*d*cc))
if((g-dreal(int(g))).lt.t)g=dreal(int(g))
if((g-dreal(int(g))).gt.(1.-t))g=dreal(int(g))+1.
if((d.eq.g).or.(g.eq.e))goto 6
if((mod(g,1.)).ne.0.)goto 6
do 7 f=2.,(c-2.),1.
h=DSQRT(f*f+(a-d)*(a-d)-(2.*f*(a-d)*cb))
if((h-dreal(int(h))).lt.t)h=dreal(int(h))
if((h-dreal(int(h))).gt.(1.-t))h=dreal(int(h))+1.
if((mod(h,1.)).ne.0.)goto 7
i=DSQRT((c-f)*(c-f)+(b-e)*(b-e)-(2.*(c-f)*(b-e)*ca))
if((i-dreal(int(i))).lt.t)i=dreal(int(i))
if((i-dreal(int(i))).gt.(1.-t))i=dreal(int(i))+1.
if((mod(i,1.)).ne.0.)goto 7
if((h.eq.i).or.(i.eq.g).or.(i.eq.(b-e)))goto 7
if(i.eq.(c-f))goto 7
if(((d.eq.(a/2))+(e.eq.(b/2))+(f.eq.(c/2))).ge.2)goto
7
write(6,9) a,b,c,d,e,f,g,h,i
7
continue
6
continue
5 continue
4 continue
3 continue
2 continue
9
format(9f8.4)
90 end
t= .0000001
18.0000 16.0000 14.0000 4.0000 9.0000 6.0000
7.0000 12.0000 9.0000
20.0000 15.0000 10.0000 9.0000 12.0000 8.0000
6.0000 8.0000 4.0000
20.0000 15.0000 10.0000 16.0000 12.0000 8.0000
8.0000 6.0000 4.0000
24.0000 18.0000 12.0000 22.0000 6.0000 4.0000
17.0000 3.0000 16.0000
24.0000 20.0000 16.0000 16.0000 15.0000 12.0000 11.0000 10.0000
6.0000
24.0000 21.0000 15.0000 3.0000 7.0000 5.0000
5.0000 19.0000 16.0000
24.0000 21.0000 15.0000 16.0000 14.0000 3.0000 10.0000
7.0000 13.0000
24.0000 21.0000 15.0000 21.0000 9.0000 8.0000
15.0000 7.0000 13.0000
24.0000 21.0000 15.0000 21.0000 16.0000 8.0000 13.0000
7.0000 8.0000
25.0000 20.0000 10.0000 20.0000 16.0000 2.0000
8.0000 4.0000 10.0000