(* Frieze pattern recursion with "square" initial conditions *) Clear[x] x[i_,0]:=x[i] x[0,j_]:=x[-j] x[i_,j_]:=x[i,j]=Expand[Simplify[(x[i-1,j] x[i,j-1]+1)/x[i-1,j-1]]] (* List of monomials of a Laurent polynomial *) monoms=Apply[List,#]& (* List of exponents in each monomial *) xm[i_,j_]:=Map[Table[Exponent[#,x[k]],{k,-j,i}]&,monoms[x[i,j]]] (* Print them nicely *) TableForm[xm[4,4]] (* Create output files *) wx[i_,j_, channel_]:=Block[ {m = xm[i,j]}, Map[ (* write one row *) (Map[ WriteString[channel,Switch[#,1,"+",-1,"-",0,"."]]&,#]; WriteString[channel,"\n"])&, m] ] Do[Block[{s=OpenWrite["frieze-"<>ToString[n]<>"-"<>ToString[n]<>".mon"]}, wx[n,n,s];Close[s]],{n,1,6}]