Triangles:=proc(n) local TriangleSet, i, j, k, l, A, B, C; TriangleSet:={}: for i from 0 to n do for j from 0 to n do for k from 0 to n do for l from 0 to n do A:=i^2+j^2: B:=k^2+l^2: C:=(i-k)^2+(j-l)^2: if A^2+B^2+C^2<>2*(A*B+B*C+C*A) then TriangleSet:={op(TriangleSet), sort([sqrt(A), sqrt(B), sqrt(C)])}: fi: od: od: od: od: return(TriangleSet); end:
IsIsoscelesTriangle:=proc(T) if T[1]=T[2] or T[1]=T[3] or T[2]=T[3] then true else false fi: end:
a:=proc(n) local TriangleSet, IsoscelesTriangleSet, i;
TriangleSet:=Triangles(n): IsoscelesTriangleSet:={}: for i from 1 to nops(TriangleSet) do if IsIsoscelesTriangle(TriangleSet[i]) then IsoscelesTriangleSet:={op(IsoscelesTriangleSet), TriangleSet[i]} fi: od: return(nops(IsoscelesTriangleSet)); end: