# How can I draw Pascal's triangle with some its properties?

At here Pascal's triangle in tikz we can draw Pascal's triangle. Now I want to note some properties of coefficients C_{n+3}^4 -C_{n+2}^4-C_{n+1}^4+C_{n}^4=n^2 (the first picture) as folowing pictures

How can I draw this pictures?

I'll left to you understand the code but next is a possible solution based in Paul Gaborit's example

%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Author : Paul Gaborit (2009)
% Title : Pascal's triangle and Sierpinski triangle
% Note : 17 lines maximum
\documentclass[border=2mm, tikz]{standalone}
%\usepackage[landscape,margin=1cm]{geometry}
%\pagestyle{empty}
%\usepackage[T1]{fontenc}
%\usepackage{lmodern}

\usepackage{tikz}
\begin{document}
\centering

%
% x=\sqrt{3/4}*minimum size
% y=3/4*minimum size
%
\begin{tikzpicture}[y=7.5mm,x=8.66mm]
% some colors
\colorlet{even}{cyan!60!black}
\colorlet{odd}{orange!100!black}
\colorlet{back}{yellow!20!white}
% some styles
\tikzset{
box/.style={
regular polygon,
regular polygon sides=6,
minimum size=10mm,
inner sep=0mm,
outer sep=0mm,
text centered,
font=\small\bfseries\sffamily,
text=#1!50!black,
draw=#1,
line width=.25mm,
rotate=30,
},
link/.style={black,  shorten >=2mm, shorten <=2mm, line width=1mm},
}
% Pascal's triangle
% row #0 => value is 1
\node[box=even] (p-0-0) at (0,0) {\rotatebox{-30}{1}};
\foreach \row in {1,...,11} {
% col #0 =&gt; value is 1
\node[box=even] (p-\row-0) at (-\row/2,-\row) {\rotatebox{-30}{1}};
\pgfmathsetmacro{\myvalue}{1};
\foreach \col in {1,...,\row} {
% iterative formula : val = precval * (row-col+1)/col
% (+ 0.5 to bypass rounding errors)
\pgfmathtruncatemacro{\myvalue}{\myvalue*((\row-\col+1)/\col)+0.5};
\global\let\myvalue=\myvalue
% position of each value
\coordinate (pos) at (-\row/2+\col,-\row);
% odd color for odd value and even color for even value
\pgfmathtruncatemacro{\rest}{mod(\myvalue,2)}
\node[box=even] (p-\row-\col) at (pos) {\rotatebox{-30}{\myvalue}};
}
}
\begin{pgfonlayer}{background}
\foreach \i/\j in {4/1,5/1,5/2,6/2,7/6,8/6,8/7,9/7}
\node[box=even,fill=odd]  at (p-\i-\j) {};
\end{pgfonlayer}

\node[right=5mm of p-8-8.center, align=left]  {$(36-7)+(28-8)=49$};
\node[left=5mm of p-5-0.center, align=right]  {$(15-4)+(10-5)=16$};

\end{tikzpicture}

\end{document}


(19/11/18) Code updated to avoid problems mentioned in Problem with Pascal triangle example

• hi. There may be a problem in this code, an interaction with some other package. If you have trouble compiling it, see my other post : tex.stackexchange.com/questions/460463/… – Nicolas FRANCOIS Nov 17 '18 at 18:14
• Please consider replacing \value by something less dangerous (OK, this expression sounds stronger than it should sound, this is not meant to sound strong) since \value has a well-defined meaning in many packages/classes, so there could be problems, see e.g. this post. How about \myvalue? – user121799 Nov 17 '18 at 18:17
• @NicolasFRANCOIS Code updated. – Ignasi Nov 19 '18 at 8:12

Not a complete answer, but just intended to show a different way of drawing the triangle and also calculating the values. Requires lualatex:

\documentclass[tikz,border=5]{standalone}
\usetikzlibrary{shapes.geometric}
\directlua{
function factorial (f)
if f < 2 then  return 1 else  return f*factorial(f-1) end
end

function nchoosek(n, k)
return factorial(n) / (factorial(n-k) * factorial(k))
end
}
\tikzset{hexagon/.style={
regular polygon, regular polygon sides=6, shape border rotate=30,
minimum size=1cm, inner sep=0pt,
draw, ultra thick, execute at begin node={\setbox0\hbox\bgroup},
execute at end node={\egroup\pgfmathparse{min(4ex,\wd0)/\wd0}%
\scalebox{\pgfmathresult}{\box0}}
}}
\begin{document}
\tikz[x=1cm*sin 60, y=1.5cm*cos 60]
\foreach \n in {0,...,11}
\foreach \k in {0,...,\n}
\node [hexagon] at (-\n/2+\k, -\n) {\directlua{tex.print("" .. nchoosek(\n,\k))}};
\end{document}


The advantage with using lualatex is that it is possible to bypass the limits on mathematical calculations in PGF (actually in TeX):

• This won't compile at my place as of today. The fix is explained here : add \RequirePackage{luatex85} as the very first line, a temporary workaround until standalone is updated. – marsupilam Oct 25 '16 at 16:29
• Hi @mark-wibrow, I would like to use your code with a little change: I would like to be able to change the background color of some hexagons, inserting some conditional code. I don't know where to insert it, though. A simple line like "\ifthenelse{\n=2}{fill=blue!30,}{}" won't work. How could I do? – zar Nov 2 '16 at 17:31