22 lines
847 B
TeX
22 lines
847 B
TeX
\long\def\antefi#1#2\fi{#2\fi#1}
|
|
\def\fornum#1=#2to#3(#4){%
|
|
\edef#1{\number\numexpr#2}\edef\fornumtemp{\noexpand\fornumi\expandafter\noexpand\csname fornum\string#1\endcsname
|
|
{\number\numexpr#3}{\ifnum\numexpr#4<0 <\else>\fi}{\number\numexpr#4}\noexpand#1}\fornumtemp
|
|
}
|
|
\long\def\fornumi#1#2#3#4#5#6{\def#1{\unless\ifnum#5#3#2\relax\antefi{#6\edef#5{\number\numexpr#5+(#4)\relax}#1}\fi}#1}
|
|
\def\elem(#1,#2){\numexpr(#1+#2)*(#1+#2-1)/2-(\ifodd\numexpr#1+#2\relax#1\else#2\fi)\relax}
|
|
\def\zzmat#1{%
|
|
\noindent% quit vertical mode
|
|
\fornum\yy=1to#1(+1){%
|
|
\fornum\xx=1to#1(+1){%
|
|
\ifnum\numexpr\xx+\yy\relax<\numexpr#1+2\relax
|
|
\hbox to 2em{\hfil\number\elem(\xx,\yy)}%
|
|
\else
|
|
\hbox to 2em{\hfil\number\numexpr#1*#1-1-\elem(#1+1-\xx,#1+1-\yy)\relax}%
|
|
\fi
|
|
}%
|
|
\par\noindent% next line + quit vertical mode
|
|
}\par
|
|
}
|
|
\zzmat{5}
|
|
\bye
|