我正在写一篇文档,很想写出帕斯卡三角模 2。即每个二项式系数模 2,除以 2 后的“余数”。我找到了这些链接(帕斯卡) 的普通三角形代码,并尝试手动编写每个节点,但我没能做到。我想要一个像这样的三角形:
1
11101 1111 10001 ...
如果能得到一些帮助我将非常感激,非常感谢。
答案1
实际上,你可以从本网站找到任何帕斯卡三角形的例子,并应用到mod(2)
数字上,例如,取这种方法我们可以得到:
\documentclass[tikz,border=5]{standalone}
\usepgflibrary{fpu}
\begin{document}
\def\N{10}
\tikz[x=0.75cm,y=0.5cm,
pascal node/.style={font=\footnotesize},
row node/.style={font=\footnotesize, anchor=west, shift=(180:1)}]
\path
\foreach \n in {0,...,\N} {
(-\N/2-1, -\n) node[row node/.try]{Row \n:}
\foreach \k in {0,...,\n}{
(-\n/2+\k,-\n) node[pascal node/.try] {%
\pgfkeys{/pgf/fpu}%
\pgfmathparse{mod(round(\n!/(\k!*(\n-\k)!)),2)}%
\pgfmathfloattoint{\pgfmathresult}%
\pgfmathresult%
}}};
\end{document}
最后一行的单个负零可能是舍入误差的结果。我留给你来修复它... =)
答案2
你也许可以简化一下逻辑,但是
\documentclass{article}
\def\zz#1#2{%
\ifx\empty#2\else
\ifodd\numexpr#1+#2\relax1\else0\fi
\expandafter\zz\expandafter#2%
\fi}
\def\ptriangle#1#2{%
\ifnum#1=0
\def\lastline{1}%
\else
\edef\lastline{\expandafter\zz\expandafter0\lastline0\empty}%
\fi
\lastline\par
\ifnum#1=#2
\expandafter\zzstop
\fi
\ptriangle{\numexpr#1+1\relax}{#2}%
}
\def\zzstop#1#2#3{}
\begin{document}
\ptriangle{0}{5}
\end{document}