6

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 enter image description here

enter image description here

How can I draw this pictures?

2 Answers 2

10

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

%%%%%%%%%%%%%%%%%%%%%%%%%%% % Author : Paul Gaborit (2009) % under Creative Commons attribution license. % 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} \usetikzlibrary{positioning,shadows,backgrounds,shapes.geometric} \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{links}{red!70!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} \draw[link] (p-4-1.center)--(p-6-2.center); \draw[link] (p-5-1.center)--(p-5-2.center); \draw[link] (p-7-6.center)--(p-9-7.center); \draw[link] (p-8-6.center)--(p-8-7.center); \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} 

enter image description here

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

3
  • 1
    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/… Commented Nov 17, 2018 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? Commented Nov 17, 2018 at 18:17
  • @NicolasFRANCOIS Code updated. Commented Nov 19, 2018 at 8:12
15

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} 

enter image description here

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

enter image description here

2
  • 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. Commented Oct 25, 2016 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? Commented Nov 2, 2016 at 17:31

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.