Covering a triangular grid with rhombi
Source: 2023 Abelkonkurransen Finale, Problem 2a
March 12, 2024
combinatorics
Problem Statement
The sides of an equilateral triangle with sides of length have been divided into equal parts, each of length , and lines have been drawn through the points of division parallel to the sides of the triangle, thus dividing the large triangle into many small triangles. Nils has a pile of rhombic tiles, each of side and angles and , and wants to tile most of the triangle using these, so that each tile covers two small triangles with no overlap. In the picture, three tiles are placed somewhat arbitrarily as an illustration. How many tiles can Nils fit inside the triangle?
[asy]
/* original code by fedja: https://artofproblemsolving.com/community/c68h207503p1220868
modified by Klaus-Anton: https://artofproblemsolving.com/community/c2083h3267391_draw_me_a_grid_of_regular_triangles
*/
size(5cm);
int n=6;
pair A=(1,0), B=dir(60);
path P=A--B--(0,0)--cycle;
path Pp=A--shift(A)*B--B--cycle;/*
label("",A,S);
label("",B,dir(120));
label("",(0,0),dir(210));fill(shift(2*A-1+2*B-1)*P,yellow+white);
fill(shift(2*A-1+2*B-0)*P,yellow+white);
fill(shift(2*A-1+2*B+1)*P,yellow+white);
fill(shift(2*A-1+2*B+2)*P,yellow+white);fill(shift(1*A-1+1*B)*P,blue+white);
fill(shift(2*A-1+1*B)*P,blue+white);
fill(shift(3*A-1+1*B)*P,blue+white);
fill(shift(4*A-1+1*B)*P,blue+white);
fill(shift(5*A-1+1*B)*P,blue+white);fill(shift(0*A+0*B)*P,green+white);
fill(shift(0*A+1+0*B)*P,green+white);
fill(shift(0*A+2+0*B)*P,green+white);
fill(shift(0*A+3+0*B)*P,green+white);
fill(shift(0*A+4+0*B)*P,green+white);
fill(shift(0*A+5+0*B)*P,green+white);fill(shift(2*A-1+3*B-1)*P,magenta+white);
fill(shift(3*A-1+3*B-1)*P,magenta+white);
fill(shift(4*A-1+3*B-1)*P,magenta+white);fill(shift(5*A+5*B-5)*P,heavyred+white);fill(shift(4*A+4*B-4)*P,palered+white);
fill(shift(4*A+4*B-3)*P,palered+white);
fill(shift(0*A+0*B)*Pp,gray);
fill(shift(0*A+1+0*B)*Pp,gray);
fill(shift(0*A+2+0*B)*Pp,gray);
fill(shift(0*A+3+0*B)*Pp,gray);
fill(shift(0*A+4+0*B)*Pp,gray);fill(shift(1*A+1*B-1)*Pp,lightgray);
fill(shift(1*A+1*B-0)*Pp,lightgray);
fill(shift(1*A+1*B+1)*Pp,lightgray);
fill(shift(1*A+1*B+2)*Pp,lightgray);fill(shift(2*A+2*B-2)*Pp,red);
fill(shift(2*A+2*B-1)*Pp,red);
fill(shift(2*A+2*B-0)*Pp,red);fill(shift(3*A+3*B-2)*Pp,blue);
fill(shift(3*A+3*B-3)*Pp,blue);fill(shift(4*A+4*B-4)*Pp,cyan);fill(shift(0*A+1+0*B)*Pp,gray);
fill(shift(0*A+2+0*B)*Pp,gray);
fill(shift(0*A+3+0*B)*Pp,gray);
fill(shift(0*A+4+0*B)*Pp,gray);
*/fill(Pp, rgb(244, 215, 158));
fill(shift(dir(60))*P, rgb(244, 215, 158));fill(shift(1.5,(-sqrt(3)/2))*shift(2*dir(60))*Pp, rgb(244, 215, 158));
fill(shift(1.5,(-sqrt(3)/2))*shift(2*dir(60))*P, rgb(244, 215, 158));fill(shift(-.5,(-sqrt(3)/2))*shift(4*dir(60))*Pp, rgb(244, 215, 158));
fill(shift(.5,(-sqrt(3)/2))*shift(4*dir(60))*P, rgb(244, 215, 158));for(int i=0;ishipout(bbox(2mm,Fill(white)));
[/asy]